wxPython-帧在一瞬间出现并消失
我已经编写了一个简单的代码来显示按钮网格。但不知何故,在执行时,帧在一瞬间出现并消失,留下一个错误,上面写着: Wx.yCy.PyAsRealError:C++断言MyHDWP在.\SRC\MSW\WOWDO.CPP5168中失败,在WxWelwindows中::EndoRealPosidStIs:不应该被称为 有一个菜单栏和按钮网格。菜单栏和按钮网格都使用boxsizer放置在框架中 我不知道如何使它工作。任何帮助都将不胜感激 [编辑]:删除self.setMenuBarManubar行使其在没有菜单栏的情况下工作 这是我的密码:wxPython-帧在一瞬间出现并消失,python,wxpython,Python,Wxpython,我已经编写了一个简单的代码来显示按钮网格。但不知何故,在执行时,帧在一瞬间出现并消失,留下一个错误,上面写着: Wx.yCy.PyAsRealError:C++断言MyHDWP在.\SRC\MSW\WOWDO.CPP5168中失败,在WxWelwindows中::EndoRealPosidStIs:不应该被称为 有一个菜单栏和按钮网格。菜单栏和按钮网格都使用boxsizer放置在框架中 我不知道如何使它工作。任何帮助都将不胜感激 [编辑]:删除self.setMenuBarManubar行使其
import wxversion
wxversion.select("3.0")
import wx
class Main(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title)
self.SetBackgroundColour(wx.BLUE)
menubar = wx.MenuBar()
menu_1 = wx.Menu()
menu_1.Append(-1,'Open','&Open')
menu_1.Append(-1,'Save','&Save')
menu_2 = wx.Menu()
menu_2.AppendCheckItem(-1,'Sound On','&Sound On')
menu_3 = wx.Menu()
menu_3.Append(-1,'Help','&Help')
menu_3.Append(-1,'About','&About')
menubar.Append(menu_1,'File')
menubar.Append(menu_2,'Settings')
menubar.Append(menu_3,'Help')
self.SetMenuBar(menubar) ## REMOVING THIS MAKES IT WORK, BUT WITHOUT THE MENU BAR ##
vsizer = wx.BoxSizer(wx.VERTICAL)
gsizer = wx.GridSizer(6,6,2,2)
self.btn = range(36)
for ix in range(0,36):
self.btn[ix] = wx.Button(self,ix+1000,'Title',(10,10))
gsizer.Add(self.btn[ix], 0, wx.ALL|wx.EXPAND, border=2)
vsizer.Add(menubar,-1,wx.EXPAND|wx.ALL)
vsizer.Add(gsizer, 0, wx.EXPAND|wx.ALL, border=2)
self.SetSizer(vsizer)
self.Center()
self.Show(True)
a = wx.App()
h = Main(None,-1,'App')
h.Show(True)
a.MainLoop()
我认为问题在于你的压痕。您需要在类主体之外构造应用程序。在上面的示例中,您已经将其设置为类实例。只要删除这些行,呃,取消缩进,就行了
a = wx.App()
h = Main(None,-1,'App')
h.Show(True)
a.MainLoop()
实际上,Joran Beasley是对的:你不应该在一个sizer上添加一个菜单栏,与wx.ToolBar相比,它应该做什么呢 就说吧
# vsizer.Add(menubar,-1,wx.EXPAND|wx.ALL)
我想它在2.9.5和3.0.1b以及3.0上也能工作。我刚刚修复了压痕。谢谢你指出@jaimie,但是我的代码在IDE中有正确的缩进。遗憾的是,这并不是这个错误的根源。对不起,我只有wx 2.8本地版本,而且它在那里工作。是的,刚刚发现。感谢@jaimeworks在wx 2.8.0中为我做的一切,我不得不对wx版本的东西进行注释。。。另外,您可能希望尝试a=wx.Appredirect=False,这样您就可以在您的consoleThanks@JoranBeasley中看到任何回溯消息。好的,我删除了导入wxversion,它已成功编译,但菜单栏不可见。有线索吗?没有像Jaime我只有2.8。。。你可以试试2.8。。。也许是3.0版中出现了一些问题,或者是其他什么问题。你是说这两行代码都没有注释吗?self.SetMenuBarmenubar vsizer.Addmenubar,-1,wx.EXPAND | wx。ALL@JoranBeasley事实上,它在2.8中是这样的,谢谢!