Python 程序启动时调用win32api.messagebox
我有一个非常简单的Python程序,用来熟悉win32api消息调用。我在节目里放了一行Python 程序启动时调用win32api.messagebox,python,Python,我有一个非常简单的Python程序,用来熟悉win32api消息调用。我在节目里放了一行 mywin['button'].onclick = win32api.MessageBox(0, 'hello', 'title') 问题是,程序一启动,消息框就会显示出来。单击按钮时,它不会显示。你知道我做错了什么吗 以下是我的代码的其余部分: import gui import win32api gui.Window(name='mywin', title=u'gui2py minimal app'
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()
您正在将
.onclick
属性分配给调用win32api.MessageBox
的返回值。这与做以下事情没有什么不同:
value = win32api.MessageBox(0, 'hello', 'title')
mywin['button'].onclick = value
要解决此问题,您可以使用:
上面为lambda函数指定了
.onclick
属性。单击按钮时,将调用lambda并执行win32api.MessageBox(0,'hello','title')
代码。OK,我输入了:mywin['button'].onclick=lambda:win32api.MessageBox(0,'hello','title'),但只要我按下“Run”,消息框仍会显示出来当我点击按钮时,它不会显示。我需要为lambda导入任何内容吗?我还尝试添加您的行:value=win32api.MessageBox(0,'hello','title')mywin['button']。onclick=value,但得到了相同的结果。运行时显示消息,单击时不显示消息。不,您不需要导入任何内容,因为lambda
是一个关键字。您是否正在另一个地方调用win32api.MessageBox
?否则,您可能会错误地处理单击事件。你能把剩下的代码贴出来吗?在这一点上没有足够的东西可以使用。我只是在“交互窗口”中看到了这一点:回溯(最近一次调用):文件“\\psf\Home\Downloads\gui2py-0.9.3\gui\spec.py”,第79行,在处理程序操作(事件)中,只需调用用户函数TypeError:“int”对象不可调用是的,代码非常小。我把它贴在我的投递箱上:
mywin['button'].onclick = lambda: win32api.MessageBox(0, 'hello', 'title')