Открытие стилизованного графического интерфейса Tkinter из события нажатия кнопки Tkinter не применяет стильPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Открытие стилизованного графического интерфейса Tkinter из события нажатия кнопки Tkinter не применяет стиль

Сообщение Anonymous »

У меня есть два файла в одной папке: MainApp.py и SecondApp.py.
Оба имеют ttk.Style() применяется к конкретным элементам управления. А когда вы запускаете их по отдельности, стили реализуются соответствующим образом.

MainApp:
Изображение

Код:< /p>

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

import tkinter as tk
from tkinter import ttk, PhotoImage
from SecondApp import SecondApp

class MainApp:
def __init__(self, app):
self.app = app
self.app.title("MainApp")
self.app.geometry("200x200")
self.app.config(bg="#FFFFFF")

def create_styles(self):
self.style = ttk.Style()
self.style.theme_use('clam')

self.style.configure('HELP_BUTTON.TButton',
padding=10,
relief='flat',
background="#625bcb",
foreground='white')
self.style.map('HELP_BUTTON.TButton',
background=[('active', '#352cbc'), ('disabled', '#acacac')],
foreground=[('active', 'white'), ('disabled', 'gray')])

def render_widget(self):
self.btn_help_img = PhotoImage(file=fr"D:\question_mark_25px.png", master=self.app)
self.btn_help = ttk.Button(self.app, padding=(0, -1), image=self.btn_help_img, style="HELP_BUTTON.TButton")
self.btn_help.config(cursor="hand2")
self.btn_help.place(x=10, y=10, width=28, height=28)
self.btn_help.bind("", self.open_app)

def open_app(self, event):
self.root = tk.Tk()
self.sa = SecondApp(self.root)
self.sa.create_styles()
self.sa.render_widget()

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

rrt = MainApp(root)

rrt.create_styles()
rrt.render_widget()

rrt.app.mainloop()
SecondApp:
Изображение

Код:

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

from tkinter import ttk

class SecondApp:
def __init__(self, app):
self.app = app
self.app.title("SecondApp")
self.app.geometry("200x200")
self.app.config(bg="#FFFFFF")

self.HEADER_FONT = ("Istok Web", 9, "bold")

def create_styles(self):
self.style = ttk.Style()
self.style.theme_use('clam')

# Debugging output
print("Creating styles for SecondApp")

self.style.configure('FLAT_BUTTON.TButton',
padding=8,
font=self.HEADER_FONT,
relief='flat',
background='#DDDDDD',
foreground='#302C2c')
self.style.map('FLAT_BUTTON.TButton',
background=[('active', '#cac6c6'), ('disabled', '#acacac')],
foreground=[('active', 'black'), ('disabled', 'gray')])

def render_widget(self):
# Debugging output
print("Rendering widget in SecondApp")

self.btn_startProcessing = ttk.Button(self.app, text="START PROCESSING", style="FLAT_BUTTON.TButton")
self.btn_startProcessing.place(x=10, y=10, width=150, height=40)
Однако, когда я связываю запуск SecondApp нажатием кнопки в MainApp, стиль SecondApp не работает т нагрузки. Стили инкапсулированы внутри соответствующих классов, и я пробовал множество модификаций своего кода, но безуспешно.
Изображение

Мне интересно, сталкивался ли кто-нибудь с такой же проблемой и смог ее исправить?

Подробнее здесь: https://stackoverflow.com/questions/792 ... nt-apply-t
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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