Python 3.x 显示变量的ttk标签

Python 3.x 显示变量的ttk标签,python-3.x,tkinter,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 =

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

您要做的是使用tkinter变量类。 在本例中,您需要一个
StringVar

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

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

v.set("New Text!")
变量类包括
BooleanVar、DoubleVar、IntVar、StringVar


另一个没有StringVar的解决方案只是存储对Label小部件的引用,并使用其
config
方法更改文本选项

除此之外,我建议您使用
os.path.join
而不是
fName=path+'/'+fn
,并为变量
dir
使用另一个名称,因为它已经是:


谢谢。它只打印最后一个文件名。有什么原因吗?@user1212200之所以会这样,是因为标签会更新每个文件的文本,所以最后一个文件不会被任何其他
config
调用更改。你想显示所有的文件名吗?是的,那太好了。如果它将根据循环中的当前文件进行更改,那将非常棒。@user1212200它将根据循环中的当前文件进行更改,唯一的一点是它发生得如此之快(以毫秒为单位),以至于您无法注意到。查看我的最新答案。谢谢你的帮助。我应该在脚本中的何处添加这些行。该链接不提供此信息。您不需要将这些行添加到脚本中。这只是一个帮助您理解如何将tkinter变量与小部件关联的示例。
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))