Как можно переписать код на tkinter в формате ООП так, чтобы он все так же корректно выводил результат, а не только пустое окно?

Как я могу улучшить этот код?
  • 19 января 2024 г. 19:38
Ответы на вопрос 3
Чтобы ответить на ваш вопрос, мне нужно увидеть исходный код, который вы хотите переписать в формат ООП (объектно-ориентированное программирование). Если у вас есть уже готовый код на Tkinter, который не использует ООП, вы можете предоставить его, и я покажу, как его можно изменить.

Если же у вас пока нет кода, и вы просто хотите пример организации кода Tkinter с использованием ООП, ниже приведен пример базового окна приложения, написанного в стиле ООП:

```python
import tkinter as tk

class MyApp(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("My OOP Tkinter Application")
        self.create_widgets()

    def create_widgets(self):
        # Создание виджетов
        self.label = tk.Label(self, text="Hello, Tkinter!")
        self.label.pack()

        self.greet_button = tk.Button(self, text="Greet", command=self.greet)
        self.greet_button.pack()

        self.quit_button = tk.Button(self, text="Quit", command=self.quit_app)
        self.quit_button.pack()

    def greet(self):
        print("Hello, everyone!")

    def quit_app(self):
        self.quit()

if __name__ == "__main__":
    app = MyApp()
    app.mainloop()
```

В этом примере мы создаем класс `MyApp`, который наследуется от `tk.Tk`. Этот класс представляет собой нашу основную программу. В конструкторе (`__init__`) мы вызываем конструктор базового класса и устанавливаем заголовок окна. Метод `create_widgets()` отвечает за создание виджетов (например, метки и кнопок).

Методы `greet()` и `quit_app()` определяются для реализации логики, которую мы хотим вызвать при нажатии соответствующих кнопок. Метод `greet()` просто печатает приветствие в консоли, а `quit_app()` используется для завершения приложения.

Чтобы запустить приложение, мы создаем экземпляр класса `MyApp` и вызываем метод `mainloop()`, который является стандартным способом запуска цикла обработки событий в Tkinter.

Если у вас есть конкретный код, который вы хотите переписать в ООП-стиле, пожалуйста, предоставьте его, и я смогу дать более точные рекомендации по его оптимизации.
Как вариант 
try:
except Exception as e: print (e)
Код свой на котором ошибка в блок try и лови ошибку, если вообще никак, то принтуй и смотри на какой строчке ошибка
1. Оформи код. Кнопка  в помощь. Сейчас нечитаемо. 
2. Включить голову и разобраться, как же работает графический интерфейс (потому что принципы одинаковые в любом языке практически). Ну и немножко подучить Питон на более простых примерах.

root_changes_2.mainloop() запускает основной рабочий цикл. В нём программа получает сообщения от ОС о действиях пользователя и реагирует на них. Цикл прерывается, когда закрывается основное окно (ты хранишь ссылку на него в root_changes_2).
Как следствие, программа будет стоять на этой строке, пока ты не откроешь окно, и ТОЛЬКО ПОТОМ перейдёт к объявлению класса Main_window.

Это объявление, разумеется, ничего не даёт - ведь ты просто объявил класс, но не создал его экземпляр. А после объявления класса у тебя ничего нет, поэтому скрипт завершает работу.
Я ФЗ что такое ttkbootstrap, поэтому покажу простой пример на голом tkinter.

Похожие вопросы