mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	 a7d2797e80
			
		
	
	
		a7d2797e80
		
	
	
	
	
		
			
			svn+ssh://pythondev/python/trunk ........ r69053 | guilherme.polo | 2009-01-28 13:56:01 -0200 (Wed, 28 Jan 2009) | 2 lines Demos for ttk added. ........
		
			
				
	
	
		
			61 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """Ttk Theme Selector v2.
 | |
| 
 | |
| This is an improvement from the other theme selector (themes_combo.py)
 | |
| since now you can notice theme changes in Ttk Combobox, Ttk Frame,
 | |
| Ttk Label and Ttk Button.
 | |
| """
 | |
| import tkinter
 | |
| from tkinter import ttk
 | |
| 
 | |
| class App(ttk.Frame):
 | |
|     def __init__(self):
 | |
|         ttk.Frame.__init__(self, borderwidth=3)
 | |
| 
 | |
|         self.style = ttk.Style()
 | |
| 
 | |
|         # XXX Ideally I wouldn't want to create a Tkinter.IntVar to make
 | |
|         #     it works with Checkbutton variable option.
 | |
|         self.theme_autochange = tkinter.IntVar(self, 0)
 | |
|         self._setup_widgets()
 | |
| 
 | |
|     def _change_theme(self):
 | |
|         self.style.theme_use(self.themes_combo.get())
 | |
| 
 | |
|     def _theme_sel_changed(self, widget):
 | |
|         if self.theme_autochange.get():
 | |
|             self._change_theme()
 | |
| 
 | |
|     def _setup_widgets(self):
 | |
|         themes_lbl = ttk.Label(self, text="Themes")
 | |
| 
 | |
|         themes = self.style.theme_names()
 | |
|         self.themes_combo = ttk.Combobox(self, values=themes, state="readonly")
 | |
|         self.themes_combo.set(themes[0])
 | |
|         self.themes_combo.bind("<<ComboboxSelected>>", self._theme_sel_changed)
 | |
| 
 | |
|         change_btn = ttk.Button(self, text='Change Theme',
 | |
|             command=self._change_theme)
 | |
| 
 | |
|         theme_change_checkbtn = ttk.Checkbutton(self,
 | |
|             text="Change themes when combobox item is activated",
 | |
|             variable=self.theme_autochange)
 | |
| 
 | |
|         themes_lbl.grid(ipadx=6, sticky="w")
 | |
|         self.themes_combo.grid(row=0, column=1, padx=6, sticky="ew")
 | |
|         change_btn.grid(row=0, column=2, padx=6, sticky="e")
 | |
|         theme_change_checkbtn.grid(row=1, columnspan=3, sticky="w", pady=6)
 | |
| 
 | |
|         top = self.winfo_toplevel()
 | |
|         top.rowconfigure(0, weight=1)
 | |
|         top.columnconfigure(0, weight=1)
 | |
|         self.columnconfigure(1, weight=1)
 | |
|         self.grid(row=0, column=0, sticky="nsew", columnspan=3, rowspan=2)
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     app = App()
 | |
|     app.master.title("Theme Selector")
 | |
|     app.mainloop()
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 |