summaryrefslogtreecommitdiffstats
path: root/Demo/tkinter/ttk/combo_themes.py
diff options
context:
space:
mode:
Diffstat (limited to 'Demo/tkinter/ttk/combo_themes.py')
-rw-r--r--Demo/tkinter/ttk/combo_themes.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/Demo/tkinter/ttk/combo_themes.py b/Demo/tkinter/ttk/combo_themes.py
new file mode 100644
index 0000000..98b3164
--- /dev/null
+++ b/Demo/tkinter/ttk/combo_themes.py
@@ -0,0 +1,46 @@
+"""Ttk Theme Selector.
+
+Although it is a theme selector, you won't notice many changes since
+there is only a combobox and a frame around.
+"""
+import ttk
+
+class App(ttk.Frame):
+ def __init__(self):
+ ttk.Frame.__init__(self)
+
+ self.style = ttk.Style()
+ self._setup_widgets()
+
+ def _change_theme(self, event):
+ if event.widget.current(): # value #0 is not a theme
+ newtheme = event.widget.get()
+ # change to the new theme and refresh all the widgets
+ self.style.theme_use(newtheme)
+
+ def _setup_widgets(self):
+ themes = list(self.style.theme_names())
+ themes.insert(0, "Pick a theme")
+ # Create a readonly Combobox which will display 4 values at max,
+ # which will cause it to create a scrollbar if there are more
+ # than 4 values in total.
+ themes_combo = ttk.Combobox(self, values=themes, state="readonly",
+ height=4)
+ themes_combo.set(themes[0]) # sets the combobox value to "Pick a theme"
+ # Combobox widget generates a <<ComboboxSelected>> virtual event
+ # when the user selects an element. This event is generated after
+ # the listbox is unposted (after you select an item, the combobox's
+ # listbox disappears, then it is said that listbox is now unposted).
+ themes_combo.bind("<<ComboboxSelected>>", self._change_theme)
+ themes_combo.pack(fill='x')
+
+ self.pack(fill='both', expand=1)
+
+
+def main():
+ app = App()
+ app.master.title("Ttk Combobox")
+ app.mainloop()
+
+if __name__ == "__main__":
+ main()