ttk.Label显示变量

时间:2013-07-23 10:31:33

标签: python-3.x tkinter

我试图在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()

2 个答案:

答案 0 :(得分:1)

您要做的是使用tkinter变量类。 在您的情况下,您需要StringVar

您可以将Tkinter变量与标签(或基本上任何其他小部件)相关联。当变量的内容发生变化时,标签会自动更新:

v = StringVar()
Label(master, textvariable=v).pack()

v.set("New Text!")

变量类包括BooleanVar, DoubleVar, IntVar, StringVar

Read more

答案 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))