关闭

wxpython 在执行的时候报错

标签: pythonwxpython
737人阅读 评论(0) 收藏 举报
分类:

在执行一个wxpython的时候报错

Traceback (most recent call last):

  File "C:\Users\quan\Desktop\wx16.py", line 145, in <module>
    frame = Frame(None)
  File "C:\Users\quan\Desktop\wx16.py", line 18, in __init__
    self.createMenuBar()
  File "C:\Users\quan\Desktop\wx16.py", line 45, in createMenuBar
    menuBar.Append(self.createMenu(menuItem),menuLabel)
  File "C:\Users\quan\Desktop\wx16.py", line 57, in createMenu
    self.Bind(wx.EVT_MENU,eachHandler,menu)
  File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 3918, in Bind
    assert source is None or hasattr(source, 'GetId')

AssertionError


下面是有报错的原因和解决的方法

#!/usr/bin/python 
#coding:utf8


import wx

#实例化窗口
class Frame(wx.Frame):
    def __init__(self, parent):
        # 实例话窗口
        wx.Frame.__init__(self,parent,-1,'open file',size=(500,500))
        #创建面板
        self.panel = wx.Panel(self,-1)        # 设置背景的颜色
        self.panel.SetBackgroundColour('White')
        #绑定退出按钮
        self.Bind(wx.EVT_CLOSE,self.OnCloseWindow)
        #创建菜单栏
        self.createMenuBar()
        #创建按钮
        self.createButton()
        #创建文本
        self.createText()
    

    def menuData(self):
        _dict = {
            u'文件': (('打开',u'open',self.onOpen),
                     (u'关闭',u'quit',self.OnCloseWindow),
                     (u'查看',u'look',self.onLook)),

            u'编辑': (('复制',u'copy',self.onCopy),
                     (u'剪切',u'cut',self.onCut),
                     (u'粘贴',u'paste',self.onPaste),
                     (u'',u'',''),
                     (u'浏览',u'browse',self.onBrowse))
        }

        return _dict
    def createMenuBar(self):
        # 创建菜单栏
        menuBar = wx.MenuBar()
        for eachMenuBar in self.menuData():
            menuLabel = eachMenuBar
            menuItem = self.menuData()[eachMenuBar]
            menuBar.Append(self.createMenu(menuItem),menuLabel)
        self.SetMenuBar(menuBar)

    # 创建子菜单栏
    def createMenu(self,menuItem):
        menu = wx.Menu()
        print len(menuItem)
        for eachLabel,eachStatus,eachHandler in menuItem:
            if not eachLabel:
                menu.AppendSeparator()
                continue
            #报错时候的写法
            ####################################
            # menu.Append(-1,eachLabel,eachStatus)
            # self.Bind(wx.EVT_MENU,eachHandler,menu)
            ####################################
            # 正确的写法(绑定时候子菜单的时候要的是返回值才是正确的,绑定menu这个就会一直报错)
            ####################################
            menuButton = menu.Append(-1,eachLabel,eachStatus)
            self.Bind(wx.EVT_MENU,eachHandler,menuButton)
            ####################################

        return menu


    def createButton(self):
        pass

    def createText(self):
        pass

    def OnCloseWindow(self,event):
        self.Destroy()




    # 下面是事件驱动
    def onOpen(self,event):
        print 'ssssssssss'

    def onQuit(self,event):
        pass

    def onLook(self,event):
        pass

    def onCopy(self,event):
        pass

    def onCut(self,event):
        pass

    def onPaste(self,event):
        pass

    def onBrowse(self,event):
        pass



if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = Frame(None)
    frame.Show()
    app.MainLoop()
            



















0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:97356次
    • 积分:1555
    • 等级:
    • 排名:千里之外
    • 原创:52篇
    • 转载:37篇
    • 译文:0篇
    • 评论:6条
    最新评论