【问题标题】:Sending a variable with a button-command (python 3.3 / tkinter) [duplicate]使用按钮命令发送变量(python 3.3 / tkinter)[重复]
【发布时间】:2023-03-05 12:22:02
【问题描述】:

我想在单击按钮时更新 Tkinter 标签。 以下代码可以正常工作:

import tkinter
from tkinter import *
window = tkinter.Tk()
v="start"
lbl = Label(window, text=v)
lbl.pack()
def changelabel():
    v ="New Text!"
    lbl.config(text=v)
btn=Button(window, text="Change label text", command=changelabel)
btn.pack()
window.mainloop()

但为了获得更多动态,我希望将新文本发送到 changelabel-function。

我尝试了很多东西。这是我认为应该起作用的方法,但它会立即打印“新动态文本”,而不是等待我的点击...

import tkinter
from tkinter import *
window = tkinter.Tk()
v="start"
lbl = Label(window, text=v)
lbl.pack()
def changelabel(v):
    lbl.config(text=v)
v ="New, dynamic text!"
btn=Button(window, text="Change label text", command=changelabel(v))
btn.pack()
window.mainloop()

你明白我的错误吗?

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    您需要“隐藏”对changelabel 的调用。最简单的方法是使用lambda:

    btn=Button(window, text="Change label text", command=lambda: changelabel(v))
    

    否则,当 Python 运行您的代码时,它会看到:

    changelabel(v)
    

    将其解释为有效的函数调用,然后运行它。

    【讨论】:

    • 哇,真快!谢谢!!!
    猜你喜欢
    • 2019-07-14
    • 1970-01-01
    • 2023-02-24
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多