python - 在类中创建 tkinter 标签、按钮等

标签 python class tkinter

我正在尝试改进 tkinter 应用程序的结构。

因此,我尝试了this中提到的OOP方法线程。

我尝试使用它,但无法比示例代码更进一步。我只需要一个状态栏和一个主体,但我无法显示任何内容(例如 LabelFrameCanvas按钮...)在状态栏/主类中。

这是我目前拥有的:

import tkinter as tk

class Statusbar(tk.Frame):
    #create Labels, Buttons,...

class Main(tk.Frame):
    #create Labels, Buttons,...


class MainApplication(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent

        self.statusbar = Statusbar(self)
        self.main = Main(self)
        self.statusbar.grid()
        self.main.grid()


if __name__ == "__main__":
    root = tk.Tk()
    MainApplication(root).grid()
    root.mainloop()

也许你可以给我指出正确的方向或者给我看一个简单的例子。谢谢。

编辑:尝试更具体:

我曾经使用过 tkinter/python 一些。我只是不知道如何继续上述建议的 OOP 结构 link 。 我无法让 StatusbarMain 类中的任何内容正常工作(例如:创建标签、按钮等)。因此,如果您可以向我展示一个在这些类中创建任何内容的简单示例,我会很高兴。

最佳答案

以下内容应该可以让您有一个大概的了解:

import tkinter as tk


class Statusbar(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        lbl1 = tk.Label(self, text='Status1', fg='yellow', bg='blue')
        lbl1.pack(side='left')
        lbl2 = tk.Label(self, text='Status2', fg='white', bg='green')
        lbl2.pack(side='left')


class Main(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        txt = tk.Text(self, width=15, height=5)
        txt.insert(tk.END, 'Hello world')
        txt.pack()


class MainApplication(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent

        self.statusbar = Statusbar(self)
        self.main = Main(self)

        self.statusbar.grid()
        self.main.grid()


if __name__ == "__main__":
    root = tk.Tk()
    MainApplication(root).grid()
    root.mainloop()

关于python - 在类中创建 tkinter 标签、按钮等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59707458/

相关文章:

visual-studio - 为什么在创建新的 C++ 类时会创建两个文件(.h 和 .cpp)?

python-3.x - Python/Tkinter : Cascading menus anchored at the right instead of the left

python - 当文本文件更改时,Tkinter 标签小部件不会更新

python - 收到错误 AttributeError : '_tkinter.tkapp' object has no attribute 'getitems'

python - 无法访问 EC2 实例上的 Django 服务器

python - 合并多个具有重叠数据的 Excel 工作表

python - Scipy 从坐标列表快速初始化稀疏矩阵

Python 类 : adding dynamic attributes to methods

python - Keras 自定义层循环问题

javascript - 检查数组中的 ID 是否具有类