In this video we’ll look at making your app look better using Styles and Themes.
I’ll show you two different ways to spruce up your app, one using the ttk Style() widget, and another using the ttkthemes Library.
We’ll have to download and install the ttkthemes library, but it’s easy to set up and use.
Python Code: s.py
(Github Code)
from tkinter import *
from tkinter import ttk
from ttkthemes import ThemedTk
root = ThemedTk()
root.title('Tkinter.com - Styles and Themes')
root.iconbitmap('c:/tkinter.com/images/codemy.ico')
root.geometry("500x350")
# Define style
style = ttk.Style(root)
style.theme_use("default")
# See included styles
print(ttk.Style().theme_names())
our_themes = ttk.Style().theme_names()
our_themes2 = root.get_themes()
# Change style
def changer(theme):
# Change style
style.theme_use(theme)
my_label.config(text=f'Login - {theme} Theme')
# Create a Menu
my_menu = Menu(root)
root.config(menu=my_menu)
theme_menu = Menu(my_menu, tearoff=0)
my_menu.add_cascade(label="Themes", menu=theme_menu)
# Sub menu
for t in our_themes2:
theme_menu.add_command(label=t, command=lambda t=t: changer(t))
# Create Our Widgets
# Header Label
my_label = ttk.Label(root, text="Login", font=("Helvetica", 18))
my_label.pack(pady=20)
# Login Frame
my_frame = ttk.Frame(root)
my_frame.pack(pady=20)
# Username and Password Entry Boxes and Labels
un_label = ttk.Label(my_frame, text="User Name: ")
un_label.grid(row=0, column=0, padx=10, pady=(20,5))
un_entry = ttk.Entry(my_frame)
un_entry.grid(row=0, column=1, padx=10, pady=(20,5))
pw_label = ttk.Label(my_frame, text="Password:")
pw_label.grid(row=1, column=0, padx=10, pady=(0,20))
pw_entry = ttk.Entry(my_frame, show="*")
pw_entry.grid(row=1, column=1, padx=20, pady=(0,20))
# Login Button
my_button = ttk.Button(root, text="Login")
my_button.pack(pady=0)
# Radio Buttons
radio_frame = Frame(root)
radio_frame.pack(pady=20)
var = IntVar()
my_radio1 = ttk.Radiobutton(radio_frame, text="Remember Me", variable=var, value=1,)
my_radio1.grid(row=0, column=0, padx=20)
my_radio1 = ttk.Radiobutton(radio_frame, text="Don't Remember Me", variable=var, value=2,)
my_radio1.grid(row=0, column=1)
root.mainloop()

Add comment