Python 是否可以将kwargs传递给Tkinter中的after()函数?
我在谷歌上找不到任何东西,而且我知道语法是Python 是否可以将kwargs传递给Tkinter中的after()函数?,python,tkinter,timer,Python,Tkinter,Timer,我在谷歌上找不到任何东西,而且我知道语法是after(delay\u ms,callback=None,*args),所以在某种程度上我已经知道答案了。。。但不管怎么说,我想知道是否有可能把夸尔格也传给它,以及如何传给它。我的意思是这样的: frame.after(1000, button1.pack, side='left', fill='y') 例如,在下面的脚本中,我是否可以重写它,这样我就不必自己定义respawn函数,只需在after()中调用btn.pack方法 将tkinter作
after(delay\u ms,callback=None,*args)
,所以在某种程度上我已经知道答案了。。。但不管怎么说,我想知道是否有可能把夸尔格也传给它,以及如何传给它。我的意思是这样的:
frame.after(1000, button1.pack, side='left', fill='y')
例如,在下面的脚本中,我是否可以重写它,这样我就不必自己定义respawn
函数,只需在after()
中调用btn.pack
方法
将tkinter作为tk导入
def单击(*参数):
btn.pack_忘记()
btn.之后(1000,btn_重生,传统权利,传统Y)
def btn_再生(侧面,填充):
btn.包装(侧面=侧面,填充=填充)
root=tk.tk()
frame=tk.frame(根,宽=300,高=100,背景为橙色)
btn=tk.按钮(框架,text=“测试按钮”,font=(“控制台”,14))
frame.pack_传播(0)
frame.pack()
btn.包装(侧面=左侧,填充=右侧)
btn.bind(“,单击)
root.mainloop()
您可以使用functools.partial
frame.after(1000, functools.update_wrapper(
functools.partial(btn.pack, side='left', fill='y'), btn.pack))
这实际上为您创建了btn_respawn
功能
注意:您必须使用
update\u wrapper
将元数据(例如\uu name\uu
)从原始函数复制到部分函数。您可以使用lambda语句
frame.after(1000, lambda: button1.pack(side='left', fill='y'))
可以将字典作为第三个参数传递给after(),其中key:value对包含要传递给基础回调函数的关键字参数的名称和值
btn.after(1000, btn.pack, {'side': 'left', 'fill': 'y'})
你不应该使用
after()
这真的很糟糕,我应该用什么来代替呢?
btn.after(1000, btn.pack, {'side': 'left', 'fill': 'y'})