2016-02-16 2 views
2

Я пытаюсь включить настраиваемый выбор темы в свою программу. Я имел в виду это руководство: http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-themes.html, но я потерян.ttk создание и использование настраиваемой темы

Вот пример кода, который я использовал, чтобы попытаться понять это. Я создал новую тему «Тень», правильно, но в следующей части, с которой я борюсь. Давайте просто проясним и скажем в теме «Тень», я хотел бы изменить фон кадра на черный, фон кнопки на флот и кнопку переднего плана на белый.

Как мне это сделать?

from tkinter import * 
from tkinter import ttk 

class Main: 
    def __init__(self, master): 
     self.master = master 
     self.main_button = ttk.Button(self.master, text = 'New', command = self.new_window) 
     self.main_button.grid() 

    def new_window(self): 
     pop_up = Top(self.master) 

class Top: 
    def __init__(self, master): 
     pop_up = self.pop_up = Toplevel(master) 
     self.pop_up_frame = ttk.Frame(pop_up, height = 100, width = 100) 
     self.pop_up_frame.grid(sticky = E+W+S+N) 
     self.s = ttk.Style() 
     self.s.theme_create('shadow', parent = 'default') 

     print(self.s.theme_names()) 

     self.c1_button = ttk.Button(pop_up, text = 'Default', command = self.get_default) 
     self.c2_button = ttk.Button(pop_up, text = 'Shadow', command = self.get_shadow) 

     self.c1_button.grid() 
     self.c2_button.grid()  

    def get_default(self): 
     self.s.theme_use('default') 

    def get_shadow(self): 
     self.s.theme_use('shadow') 


root = Tk() 

app = Main(root) 

root.mainloop() 

Как всегда, спасибо!

ответ

0

Я делал это слишком сложно.

Здесь было решение для всех, кто еще пытается понять это:

from tkinter import * 
from tkinter import ttk 

class Main: 
    def __init__(self, master): 
     self.master = master 
     self.main_button = ttk.Button(self.master, text = 'New', command = self.new_window) 
     self.main_button.grid() 

    def new_window(self): 
     pop_up = Top(self.master) 

class Top: 
    def __init__(self, master): 
     pop_up = self.pop_up = Toplevel(master) 
     self.pop_up_frame = ttk.Frame(pop_up, height = 100, width = 100) 
     self.pop_up_frame.grid(sticky = E+W+S+N) 
     self.s = ttk.Style() 
     self.s.theme_create('shadow', parent = 'default') 

     print(self.s.theme_names()) 

     self.c1_button = ttk.Button(pop_up, text = 'Default', command = self.get_default) 
     self.c2_button = ttk.Button(pop_up, text = 'Vista', command = self.get_shadow) 

     self.c1_button.grid() 
     self.c2_button.grid() 

    def get_default(self): 
     self.s.theme_use('default') 

    def get_shadow(self): 
     self.s.theme_use('vista') 
     self.s.configure('TButton', foreground = 'white', background = 'blue') 
     self.s.configure('TFrame', background = 'black') 



root = Tk() 

app = Main(root) 

root.mainloop()