【问题标题】:Cannot change widget config from a method (Tkinter)无法从方法更改小部件配置(Tkinter)
【发布时间】:2020-01-27 15:41:49
【问题描述】:

我有一个类,我在 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()

【问题讨论】:

标签: python python-3.x tkinter widget


【解决方案1】:

在您的具体情况下,有两个问题。第一个是您正在创建tk.Tk 的两个实例。你永远不应该那样做。

第二个是您没有创建self.label1,因此任何修改它的尝试都会失败。

解决方案是首先删除tk.Tk 作为app 的超类。二是正确定义self.label1

class app():
    def __init__(self, master):
        self.label1 = tk.Label(...)
        ...

附带说明,您应该认真考虑遵循PEP8 的命名约定并将您的主类命名为App。 PEP8 在 python 世界中几乎是通用的,偏离它会使你的代码更难阅读。

【讨论】:

  • 谢谢。我对 python 很陌生,对 OOP 更是陌生。
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多