gpt4 book ai didi

python-3.x - python tkinter 在打开文件时更新标签的内容

转载 作者:行者123 更新时间:2023-12-03 16:49:20 24 4
gpt4 key购买 nike

我目前正在使用 tkinter 和 Python 3 编写 GUI。我的问题是我做了一个标签,我想用它显示我通过 askopenfilename() 方法打开的文件的路径,显然,当我启动程序时,这个路径不是“生成的”,所以标签是空的,这是有道理的,但我不知道如何修复它。我将把所需的代码放在下面(我将为此问题删除不必要的代码):

import tkinter as tk

class Graphicaluserinterface(tk.Frame):

def __init__(self,master=None):
super().__init__(master)
self.grid()
self.fileopenname=tk.StringVar()
self.menubar = tk.Menu(self)
self.create_widgets()

def create_widgets(self):
self.inputpathdisplay = tk.Label(self,textvariable=self.fileopenname,bg="white",width=30)
self.inputpathdisplay.grid(row=1,column=8,columnspan=3,sticky = "W")
def fileopening(self):
from tkinter.filedialog import askopenfilename
self.fileopenname = askopenfilename(filetypes = [("binary files","*.bin*"),("all files","*.*")])


root = tk.Tk()
app = Graphicaluserinterface(master=root)
root.config(menu=app.menubar)
app.mainloop()

我阅读了有关使用 update_idletasks() 的信息。如果这对我来说是正确的,我将如何在这里实现它?

最佳答案

现在您正在执行 self.fileopenname = askopenfilename(),这会将 self.fileopenname 重新定义为字符串而不是 StringVar()。要更正此问题,您需要使用 set() 设置 StringVar 的值。

也就是说,您还应该在代码顶部而不是在函数中定义所有导入。

import tkinter as tk
from tkinter.filedialog import askopenfilename


class Graphicaluserinterface(tk.Frame):

def __init__(self,master=None):
super().__init__(master)
self.grid()
self.fileopenname=tk.StringVar()
self.menubar = tk.Menu(self)

self.inputpathdisplay = tk.Label(self, textvariable=self.fileopenname, bg="white")
self.inputpathdisplay.grid(row=1,column=8,columnspan=3,sticky = "W")
self.fileopening()

def fileopening(self):
self.fileopenname.set(askopenfilename(filetypes = [("binary files","*.bin*"),("all files","*.*")]))


root = tk.Tk()
app = Graphicaluserinterface(master=root)
root.config(menu=app.menubar)
app.mainloop()

关于python-3.x - python tkinter 在打开文件时更新标签的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53190634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com