Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 程序启动时调用win32api.messagebox_Python - Fatal编程技术网

Python 程序启动时调用win32api.messagebox

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'

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

您正在将
.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')