我有一个非常简单的Python程序,我用它来熟悉win32api消息调用。我在我的程序中添加了一行
mywin['button'].onclick = win32api.MessageBox(0, 'hello', 'title')
问题是程序启动后会立即显示消息框。单击按钮时不会显示。我有什么想法吗?
以下是我的其余代码:
import gui
import win32api
gui.Window(name='mywin', title=u'gui2py minimal app', resizable=True, height='459px', width='400px', image='', )
gui.Button(label=u'Click me!', name='button', left='8', top='115', default=True, parent='mywin', )
# get a reference to the Top Level Window:
mywin = gui.get("mywin")
mywin['button'].onclick = win32api.MessageBox(0, 'hello', 'title')
if name == "main":
mywin.show()
gui.main_loop()
答案 0 :(得分:1)
您要将.onclick
属性分配给调用win32api.MessageBox
的返回值。这与做的没什么不同:
value = win32api.MessageBox(0, 'hello', 'title')
mywin['button'].onclick = value
要解决此问题,您可以使用lambda function:
mywin['button'].onclick = lambda: win32api.MessageBox(0, 'hello', 'title')
以上将.onclick
属性赋给lambda函数。单击该按钮时,将调用lambda并执行win32api.MessageBox(0, 'hello', 'title')
代码。