wxPython工具栏问题



我对这段代码有问题:

import wx
class Example(wx.Frame):
    def __init__(self, *args, **kwargs):
        super(Example, self).__init__(*args, **kwargs) 
        self.InitUI()
    def InitUI(self):    
        toolbar = self.CreateToolBar()
        qtool = toolbar.AddLabelTool(wx.ID_ANY, 'Quit', wx.Bitmap('texit.png'))
        toolbar.Realize()
        self.Bind(wx.EVT_TOOL, self.OnQuit, qtool)
        self.SetSize((250, 200))
        self.SetTitle('Simple toolbar')
        self.Centre()
        self.Show(True)

    def OnQuit(self, e):
        self.Close()
def main():
    ex = wx.App()
    Example(None)
    ex.MainLoop()    

if __name__ == '__main__':
    main()

当我运行它时,我得到:

Traceback (most recent call last):
  File "...maintest.py", line 34, in <module>
    main()
  File "...painter3Dmaintest.py", line 29, in main
    Example(None)
  File "...maintest.py", line 8, in __init__
    self.InitUI()
  File "...maintest.py", line 14, in InitUI
    toolbar.Realize()
  File "C:Python27libsite-packageswx-2.9.4-mswwx_controls.py", line 3797, in Realize
    return _controls_.ToolBarBase_Realize(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "Assert failure" failed at ....srcmswtoolbar.cpp(796) in wxToolBar::Realize(): invalid tool button bitmap

我使用:

Win7
Python2.7
wxPython2.8 unicode

我将感谢你的回答。

您的脚本找不到名为texit.png的图像。

首先,在wxPython库安装目录中找到该映像。提示:尝试在C:Python27Libsite-packageswx-3.0-mswwxtoolsEditrapixmapsthemeTangomenu中查找名为quit.png的文件。

然后,将该图像复制到与脚本相同的位置,或者在脚本中添加一些Python代码以指定图像位置的路径。

我在Windows7上使用Python 2.7 64位和wxPython 3.0。我在你的代码上遵循了这个解决方案,它对我来说很好。

尝试:

import wx
class Example(wx.Frame):
    def __init__(self, *args, **kwargs):
        super(Example, self).__init__(*args, **kwargs) 
        self.InitUI()
    def InitUI(self):    
        toolbar = self.CreateToolBar()
        myimage = wx.Image('texit.png')
        qtool = toolbar.AddLabelTool(wx.ID_ANY, 'Quit', wx.BitmapFromImage(myimage))
        toolbar.Realize()
        self.Bind(wx.EVT_TOOL, self.OnQuit, qtool)
        self.SetSize((250, 200))
        self.SetTitle('Simple toolbar')
        self.Centre()
        self.Show(True)

    def OnQuit(self, e):
        self.Close()
def main():
    ex = wx.App()
    Example(None)
    ex.MainLoop()    

if __name__ == '__main__':
    main()

也许这可以帮助你:D

最新更新