Python 3.x Python:tkinter:将变量传递给函数
我试图将变量传递给更新屏幕小部件的函数。以下代码起作用:Python 3.x Python:tkinter:将变量传递给函数,python-3.x,tkinter,Python 3.x,Tkinter,我试图将变量传递给更新屏幕小部件的函数。以下代码起作用: import tkinter as tk import random`` def update(): l.config(text=str(random.random())) root.after(1000, update) root = tk.Tk() l = tk.Label(text='0') l.pack() update() root.mainloop() 然而,如果我试图传递一个变量,它就不起作用 impo
import tkinter as tk
import random``
def update():
l.config(text=str(random.random()))
root.after(1000, update)
root = tk.Tk()
l = tk.Label(text='0')
l.pack()
update()
root.mainloop()
然而,如果我试图传递一个变量,它就不起作用
import tkinter as tk
import random
def update(a):
l.config(text=str(random.random() + a))
root.after(1000, update)
root = tk.Tk()
l = tk.Label(text='0')
l.pack()
a=1
update(a)
root.mainloop()
屏幕上会出现以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.4/tkinter/__init__.py", line 1541, in __call__
return self.func(*args)
File "/usr/lib/python3.4/tkinter/__init__.py", line 590, in callit
func(*args)
TypeError: update() missing 1 required positional argument: 'a'
有办法解决这个问题吗?需要传递变量
提前感谢。如果您正在调用一个接受附加参数的函数,您可以在
之后的调用中包含这些参数:
root.after(1000, update, a)
如果您正在调用一个接受附加参数的函数,则可以在
之后对的调用中包含这些参数:
root.after(1000, update, a)
root.after(1000,lambda x=a:update(x))解决了问题,谢谢。@user3822607:这太奇怪了。lambda在不提供任何额外价值的情况下增加了复杂性。不过,如果你喜欢这种方法,那也没什么坏处。不过,如果你喜欢这个答案,请考虑将其标记为所选答案,并可能投票表决。请参阅root。在(1000,lambda x=a:update(x))解决问题后,谢谢。@user3822607:这太奇怪了。lambda在不提供任何额外价值的情况下增加了复杂性。不过,如果你喜欢这种方法,那也没什么坏处。不过,如果你喜欢这个答案,请考虑将其标记为所选答案,并可能投票表决。请看