python - 无法从方法更改小部件配置(Tkinter)
问题描述
我有一个类,我在init方法上创建一个标签:
import tkinter as tk
from tkinter.filedialog import askopenfilename
class app(tk.Tk):
def __init__(self, master):
label1 = tk.Label(master, text="Select file...")
label1.pack()
然后我用一个按钮调用一个方法来选择一个文件并将标签文本更改为文件名路径。
def files(self):
filename = askopenfilename()
self.label1.config(text=filename)
问题是当我选择文件时,应用程序会在没有错误的情况下关闭,所以我不知道发生了什么。
课外我有:
root = tk.Tk()
app_gui = app(root)
root.mainloop()
解决方案
在您的具体情况下,有两个问题。第一个是您正在创建两个tk.Tk
. 你不应该那样做。
第二个是您没有创建self.label1
,因此任何修改它的尝试都会失败。
解决方案是首先删除tk.Tk
作为app
. 二是正确定义self.label1
class app():
def __init__(self, master):
self.label1 = tk.Label(...)
...
附带说明一下,您应该认真考虑遵循PEP8的命名约定并命名您的 main class App
。PEP8 在 python 世界中几乎是通用的,偏离它会使你的代码更难阅读。
推荐阅读
- python - 我们可以在函数映射需要超过 1 个参数的情况下应用 pandas.map() 吗?
- javascript - Javascript event not registering for right click event (in React)
- mysql - How to replace NULL values without updating the table or creating temp table
- chilkat - CkFtp PutTree not working with UNC pathes any more
- prolog - 如何获取从 Prolog 的知识库中提取的元素列表?
- sql - How to read multiple value from a temp table and assign it to a variable
- php - HTML text inputs not returning proper value
- typescript - 在构建期间使用 typescript 转换环境变量
- r - 计算其他实体面板数据的百分比变化
- r - fct_relevel piping Unknown levels in `f` all of the sudden