我试图在ttk.Label(变量Fname)中显示/更新文件名但没有成功,我该怎么办?有什么想法吗?
感谢。
我的剧本:
import os
from tkinter import *
from tkinter import ttk
def printName():
path="X:\\Temp"
dir=os.listdir(path)
for fn in dir:
fName=path+'/'+fn
print(fName)
rt = Tk()
Frame = ttk.Frame(rt, padding="10 10 100 100")
Frame.grid(column=0, row=0, sticky=(N, W, E, S))
ttk.Button(Frame, text='Click', command=printName).grid(column=1, row=1, sticky=W)
ttk.Label(Frame, text="fName").grid(column=1, row=3, sticky=(W, E))
rt.mainloop()
答案 0 :(得分:1)
您要做的是使用tkinter变量类。
在您的情况下,您需要StringVar
。
您可以将Tkinter变量与标签(或基本上任何其他小部件)相关联。当变量的内容发生变化时,标签会自动更新:
v = StringVar()
Label(master, textvariable=v).pack()
v.set("New Text!")
变量类包括BooleanVar, DoubleVar, IntVar, StringVar
答案 1 :(得分:1)
没有StringVar的另一个解决方案是存储对Label小部件的引用,并使用其config
方法更改文本选项。
除此之外,我建议您使用os.path.join
代替fName=path+'/'+fn
,并为变量dir
使用其他名称,因为它已经是built-in function:< / p>
def printName():
path="X:\\Temp"
newtext = '\n'.join(os.path.join(path, fn) for fn in listdir)
label.config(text=newtext)
label = ttk.Label(Frame, text="fName")
label.grid(column=1, row=3, sticky=(W, E))