Python Tkinter – установка собственного стиля для приложенияPython

Программы на Python
Ответить
Anonymous
 Python Tkinter – установка собственного стиля для приложения

Сообщение Anonymous »

Я пытаюсь настроить свое приложение CustomTkinter, используя две вещи:
  • пользовательский стиль (для определения цветов, шрифтов...)
  • Пользовательские виджеты, наследующие пользовательский стиль
Пользовательский стиль определяется как класс, который принимает аргумент для выбора какие-то цвета или какие-то другие цвета:

Код: Выделить всё

class Style():
def __init__(self, selected_style):
match selected_style:
case "style1":
self.colors = ["#3d3d3d", "#5c5c5c"]
case "style2":
self.colors = ["#c6c6c6", "#ececec"]
Пользовательские виджеты наследуют стиль. Виджет кнопки приведен в примере:

Код: Выделить всё

from customtkinter import CTkButton

class MyButton(CTkButton, Style):
def __init__(self, master, style, text):
Style.__init__(self, style)
CTkButton.__init__(self, master, text=text, fg_color=self.colours[1])
self.grid(sticky="WE", padx=8, pady=8)
Почему я закодировал это именно так?
  • Пользовательские виджеты избавляют меня от необходимости указывать каждый раз некоторые параметры (например, настройки сетки).
  • Стиль с аргументом позволяет мне менять все цвета, шрифты... приложения, не меняя все параметры виджетов (например, настройки сетки).
В чем проблема?< /p>
При создании экземпляра виджета необходимо передать аргумент стиля («style1» или «style2»). Он определяется при запуске приложения, и затем мне нужно передать его через все приложение каждому виджету.
Как избежать передачи аргумента стиля через все приложение?
Я понимаю, что мне, возможно, придется существенно реструктурировать свой код...

Подробнее здесь: https://stackoverflow.com/questions/790 ... -to-an-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»