在程序启动时调用win32api.messagebox

时间:2015-03-16 21:06:28

标签: python

我有一个非常简单的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()

1 个答案:

答案 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')代码。