frame = Frame(root, width=300, height=250)
没有正确创建Tkinter窗口。您能找到问题所在,然后告诉我这是什么吗?如果有帮助,我还有其余的代码。
def clicking_pad(worker_1):
root = Tk()
global left_click
def left_click(store: object) -> object:
return store
global right_click
def right_click(store: object) -> object:
return store
frame = Frame(root, width=300, height=250)
frame.bind("<Button-1>", left_click("GO"))
frame.bind("<Button-2>", right_click("STOP"))
frame.pack()
root.mainloop()
return right_click == right_click(store)
答案 0 :(得分:1)
如布赖恩·奥克利(Bryan Oakley)所述,您的代码可以毫无问题地创建Frame
。
我也不知道您的意思是“无法正确创建Tkinter窗口”。
正如acw1668所说,您在代码中有一些错误:
left_click
,right_click
bind()
(类似于command=
和after()
)需要功能名称-这意味着没有()
。这称为“回调”。如果您需要将函数与参数一起使用,则可以创建不带参数的函数,以带参数的方式运行函数。您也可以使用lambda
直接在bind()
中创建此功能bind()
无法从函数中获取结果,因此必须使用return
变量来分配结果,然后才能在函数外部获取它。我的观点:
global
是中键,<Button-2>
是右键。<Button-3>
期望获得一个参数的回调-bind()
。
event
编辑:没有import tkinter as tk
def clicking_pad(worker_1):
global left_click
global right_click
def on_left_click(store: object) -> object:
#return store
global left_click
left_click = store
print('[INSIDE] left_click:', left_click)
def on_right_click(store: object) -> object:
#return store
global right_click
right_click = store
print('[INSIDE] right_click:', right_click)
root = tk.Tk()
frame = tk.Frame(root, width=300, height=250)
frame.pack()
frame.bind("<Button-1>", lambda event:on_left_click("GO"))
frame.bind("<Button-3>", lambda event:on_right_click("STOP"))
root.mainloop()
print('[OUTSIDE] left_click:', left_click)
print('[OUTSIDE] right_click:', right_click)
clicking_pad(None)
lambda
或者如果您的函数返回值
def on_button_1(event):
on_left_click("GO")
def on_button_3(event):
on_right_click("STOP")
frame.bind("<Button-1>", on_button_1)
frame.bind("<Button-3>", on_button_3)