1

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

2 回答 2

2

你想要做的是使用 tkinter 变量类。在你的情况下,你想要一个StringVar.

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

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

v.set("New Text!")

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

阅读更多

于 2013-07-23T10:39:43.047 回答
1

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

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

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))
于 2013-07-23T10:49:26.313 回答