Tkinter GUI开发遇AttributeError:'GUI'对象无'filepath_entry'属性求解
解决Tkinter中AttributeError: 'GUI' object has no attribute 'filepath_entry'的问题
错误原因及修复方案
- 构造函数拼写错误:类中的构造函数写成了
__int__,正确应为__init__,虽然后续pathgui方法重新初始化了组件,但规范写法需要修正。 - 按钮命令绑定错误:
Browse按钮的command参数使用lambda: GUI().openfilepath(),会创建一个全新的GUI实例,这个新实例未执行pathgui方法,因此不存在filepath_entry属性。应绑定当前实例的openfilepath方法,即command=self.openfilepath。 - 文件类型参数格式错误:
askopenfilename的filetypes参数格式不正确,需将每组文件类型用括号包裹,整体形成元组结构。
修正后的完整代码
import tkinter as tk from tkinter import filedialog as fd from tkinter import END root = tk.Tk() class GUI: def __init__(self): self.filepath = "" self.filepath_labelframe = None self.filepath_label = None self.filepath_entry = None self.filepath_button = None def openfilepath(self): self.filepath = fd.askopenfilename( title="Select A File", initialdir="/", filetypes=( ("txt files", "*.txt"), ("xlsx files", "*.xlsx"), ("pdf files", "*.pdf"), ("all files", "*.*") ) ) if self.filepath: # 选中文件后才执行修改操作 self.filepath_entry.delete(0, END) self.filepath_entry.insert(0, self.filepath) return self.filepath def pathgui(self): self.filepath_labelframe = tk.LabelFrame(root, text="PATH") self.filepath_labelframe.grid(row=0, column=0, padx=25) self.filepath_label = tk.Label(self.filepath_labelframe, text="File Path: ") self.filepath_label.grid(row=0, column=0, padx=5, pady=10) self.filepath_entry = tk.Entry(self.filepath_labelframe) self.filepath_entry.grid(row=0, column=1, padx=5, pady=10, ipadx=80) self.filepath_button = tk.Button( self.filepath_labelframe, text="Browse", command=self.openfilepath ) self.filepath_button.grid(row=0, column=2, padx=5, pady=10) # 创建GUI实例并初始化界面 gui = GUI() gui.pathgui() root.mainloop()
内容的提问来源于stack exchange,提问作者Yumo
相关产品推荐
相关产品推荐

