Создание ярлыков, кнопок, ткинтеров ... в классе - PullRequest
1 голос
/ 12 января 2020

Я пытаюсь улучшить свою структуру приложений tkinter.

Поэтому я попробовал подход OOP, упомянутый в этой теме .

Я пытался играть с этим, но не мог получить намного дальше, чем пример кода. Мне просто нужна строка состояния и основной текст, но я не могу ничего отобразить (например, Label, Frame, Canvas, Button, ...) в строке состояния / основной класс.

Это то, что у меня сейчас есть:

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()

Может быть, вы можете указать мне правильное направление или показать мне простой пример. Спасибо.

РЕДАКТИРОВАТЬ: Попытка быть более точным c:

Я немного поработал с tkinter / python. Я просто не знаю, как поступить с предложенной OOP структурой из вышеуказанной link . Я не могу заставить работать что-либо внутри класса Statusbar и Main (например, создать ярлык, кнопку и т. Д.). Итак, если бы вы могли показать мне простой пример создания чего-либо в этих классах, я был бы рад go.

1 Ответ

2 голосов
/ 13 января 2020

Вот кое-что, что должно дать вам общее представление:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...