【问题标题】:Cannot get StringVar to update Label无法让 StringVar 更新标签
【发布时间】:2021-08-05 03:02:22
【问题描述】:

试图通过 StringVar 更新此标签,我快疯了。我已经在线阅读了数百万个答案,观看了多个教程,但在我运行程序时仍然无法更新标签。我错过了什么?

from os import name
import tkinter
import tkinter.filedialog as fd
from tkinter.constants import W
top = tkinter.Tk()

top.wm_title("NFT Generator")

L1 = tkinter.Label(top, text="Name your nft:")
L1.grid(row = 0, column = 0, sticky = W, pady = 2)
E1 = tkinter.Entry(top, bd =5)
E1.grid(row = 0, column = 1, sticky = W, pady = 2)

L2 = tkinter.Label(top, text="Choose a file type (PNG is preferred):",)
L2.grid(row = 1, column = 0, sticky = W, pady = 2)

variable = tkinter.StringVar(top)
variable.set(".png") # default value

OM = tkinter.OptionMenu(top, variable, ".png", ".jpg", ".jpeg", ".gif", ".bmp")
OM.grid(row = 1, column = 1, sticky = W, pady = 2)

L3 = tkinter.Label(top, text="Choose where you want to save your NFTs:")
L3.grid(row = 2, column = 0, sticky = W, pady = 2)

save_directory = tkinter.StringVar(top)
save_directory.set("knock, knock")

def callback():
    fd.askdirectory()
    save_directory.set("hello")
    top.update()

L4 = tkinter.Label(top, text=save_directory.get())
L4.grid(row = 2, column = 2, sticky = W, pady = 2)

tkinter.Button(text='Click to Open Folder', 
       command=callback).grid(row = 2, column = 1, sticky = W, pady = 2)

top.mainloop()

【问题讨论】:

    标签: python python-3.x tkinter tkinter-text tkinter-label


    【解决方案1】:

    您需要提供参数textvariable=save_diretory 来实际告诉Label 以反映对StringVar() 所做的更改

    L4 = tkinter.Label(top, text=save_directory.get(),textvariable=save_directory)
    L4.grid(row = 2, column = 2, sticky = W, pady = 2)
    

    根据Geeks for Geeks

    textvariable 与带有标签的Tkinter 变量(通常是StringVar)相关联。如果变量改变了,标签文本也会更新。

    【讨论】:

    • @Alditrus 最受欢迎
    猜你喜欢
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2013-12-14
    • 2016-12-03
    • 2015-07-21
    相关资源
    最近更新 更多