更新tkinter中的标签

时间:2019-10-04 20:06:21

标签: python tkinter tkinter-entry

我要在代码中添加一个“选择文件部分”。我想有两个选择,第一个选择文件路径,第二个输入文件路径。

我无法实现的另一个功能是,如果用户选择文件路径,则该路径将出现在输入部分。

这是我正在谈论的代码部分:

from tkinter import filedialog
import tkinter as tk

class open_file:
    def __init__(self, master):
        self.master = master
        self.file_path = ''

        self.b1 = tk.Button(master,
               text = 'Open',
               command = self.open_file).grid(row=0, column=1)

        v = tk.StringVar(root, value = self.file_path)
        self.l1 = tk.Entry(master, width=24, textvariable=v).grid(row=0, column=0)


    def open_file(self):
        self.file_path = filedialog.askopenfilename(filetypes = (("Python Files", "*.py")
                                                             ,("All files", "*.*") ))

root = tk.Tk()
app = open_file(root)
root.mainloop()

1 个答案:

答案 0 :(得分:2)

由于已将StringVar链接到文本,因此需要使用StringVar.set()来设置条目的文本。

来自http://effbot.org/tkinterbook/variable.htm:

  

set方法更新变量,并通知所有变量观察者。您可以传入正确类型的值或字符串。

您已经在StringVar上设置了内容,但是只要self.file_path更改,它们就不会动态更新。 在您的情况下,您必须在__init__函数中使StringVar(v)成为类成员

 self.v = tk.StringVar(root, value = self.file_path)

此外,当您要更新文件路径时,请通过self.v.set(String)

进行设置
def open_file(self):
        self.file_path = filedialog.askopenfilename(filetypes = (("Python Files", "*.py")
                                                            ,("All files", "*.*") ))
        if self.file_path:  #check if file path is not None or empty
                self.v.set(self.file_path)