wxPython:在Ini上执行与MenuBar绑定的事件

2024-09-28 23:16:19 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,StackOverflow蜂巢思维

我正在学习如何使用wxPython它为我正在编写的应用程序制作一个GUI。我一直在努力工作,直到我发现我不能正确地制作菜单栏。无论我做错了什么,都会导致我的事件绑定在程序运行时执行。这是有问题的代码。小的拼写错误应该被忽略,我正在从离线的开发机器上重新输入这个,这样我可能会在这里或那里漏掉一个键。在

def onDocClick():
   message = wx.MessageBox("did it work?","Question",wx.YES_NO)

def onAboutClick():
   pass

frame = wx.Frame(parent=None,title="RVR GUI",size=(315,490))
frame.Show()
panel = wx.Panel(frame,-1,size=(315,490)

menubar = wx.MenuBar()
fileMenu = wx.Menu()
documentation = fileMenu.append(wx.ID_NEW,"Documentation")
about = fileMenu.Append(wx.ID_ABOUT,"About")
menuBar.Append(fileMenu,'File')

frame.SetMenuBar(menubar)
menubar.Bind(wx.EVT_MENU,onDocClick(),documentation)
menubar.Bind(wx.EVT_MENU,onAboutClick(),about)

除了这个之外,GUI还有很多其他的功能,但是其他代码都可以正常工作,所以我认为您不需要它。基本上所发生的是,只要我运行打开GUI的脚本,onDocClick()中的消息框就会立即执行。我一按amy按钮,GUI的其余部分就会初始化好,单击“Documentation”菜单项绝对看不到任何事情发生。我有一种感觉,也许我错过了一些简单的东西wx.EVT_菜单在这种情况下不是正确的吗?如果是这样的话,正确的选择是什么?我在wxPython上看到的每个教程都是这样做的,没有解释。老实说,我对wxPython缺少有意义的文档感到震惊。Zetcode教程,甚至是一直很有帮助的鼠标vs Python,似乎都只是停留在工具箱如何工作的基础之上。但我离题了,我一直在做,我只是完全被这个弄糊涂了。不管怎样,谢谢你的回复!在

迈克尔


Tags: 代码idsizedefdocumentationwxpythonguiframe
2条回答

你应该仔细看看你的代码。我认为您在使用wxPython方面做得很好,但是事件绑定没有正确完成。您应该将方法名作为Bind方法的参数传递。相反,您可以进行一个方法调用(这将导致在UI构造期间执行绑定的方法)。要修正它,你必须去掉括号。清单的最后两行应该是:

menubar.Bind(wx.EVT_MENU, onDocClick, documentation)
menubar.Bind(wx.EVT_MENU, onAboutClick, about)

我试用了您的代码,BrtH是对的,我没有成功地从菜单栏绑定,您应该从wx.Frame实例绑定事件。 完整的、可运行的示例如下所示:

^{pr2}$

你犯了错误。改为绑定到帧。尝试frame.Bind(wx.EVT_MENU,onDocClick(),documentation)

相关问题 更多 >