Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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 是否可以将kwargs传递给Tkinter中的after()函数?_Python_Tkinter_Timer - Fatal编程技术网

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'})