我正在尝试使用guizero在Python中设置GUI,但是在将参数传递给按键处理程序时遇到了麻烦。如果我将函数调用留空,则默认event_data参数将填充有关事件的信息。如果我尝试传递自己的参数,它将不会自动传递event_data。我在弄清楚如何传递自己的参数的同时保留默认的event_data变量时遇到了麻烦。有人知道如何进行设置,以便我可以在保持event_data的同时将自己的参数传递给事件处理程序吗?
这是guizero的事件文档。它们不会遍历参数传递,但可能会有所帮助:https://lawsie.github.io/guizero/events/
我尝试传递默认值或不传递任何值或event_data本身,但是在填充参数时我什么都没做。
这有效:
def keypress(data):
if data.key == "\u001B":
toggle_fullscreen()
app.when_key_pressed = keypress
但是当我尝试传递自己的参数时:
def keypress(data, fullscreen):
if data.key == "\u001B":
toggle_fullscreen(fullscreen)
app.when_key_pressed = keypress(fullscreen)
由于仅提供了2个必需参数中的1个,因此返回错误
更新:
我尝试将函数设置为接受两个参数,但未向其传递任何内容:
def keypress(data, fullscreen):
if data.key == "\u001B":
toggle_fullscreen()
app.when_key_pressed = keypress
我得到了错误:
------------------------------------------------------------
*** GUIZERO WARNING ***
An event callback function must accept either 0 or 1 arguments.
The current callback has 2 arguments.
------------------------------------------------------------
这是否意味着我将无法将任何参数传递给事件处理程序?