In this video we’ll add the ability to change the font size and font style in our font dialog app.
We’ll add whatever font sizes you want, and we’ll also add these styles: regular (normal), bold, italic, underline, and strikethrough.
Python Code: font_dialog.py
(Github Code)
from tkinter import * from tkinter import font root = Tk() root.title('Codemy.com - Font Dialog Box') root.iconbitmap('c:/gui/codemy.ico') root.geometry("540x500") # Change Font Size def font_size_chooser(e): our_font.config( size=font_size_listbox.get(font_size_listbox.curselection())) # Change Font Style def font_style_chooser(e): style = font_style_listbox.get(font_style_listbox.curselection()).lower() if style == "bold": our_font.config(weight=style) if style == "regular": our_font.config(weight="normal", slant="roman", underline=0, overstrike=0) if style == "italic": our_font.config(slant=style) if style == "bold/italic": our_font.config(weight="bold", slant="italic") if style == "underline": our_font.config(underline=1) if style == "strike": our_font.config(overstrike=1) # Create font chooser function def font_chooser(e): our_font.config( family=my_listbox.get(my_listbox.curselection())) # Designate Our Font our_font = font.Font(family="Helvetica", size="32") # Add Frame my_frame = Frame(root, width=510, height=275) my_frame.pack(pady=10) # Freeze Frame in place my_frame.grid_propagate(False) my_frame.columnconfigure(0, weight=10) # Add Text Box my_text = Text(my_frame, font=our_font) my_text.grid(row=0, column=0) my_text.grid_rowconfigure(0, weight=1) my_text.grid_columnconfigure(0, weight=1) # Bottom Frame bottom_frame = Frame(root) bottom_frame.pack() # Add Labels font_label = Label(bottom_frame, text="Choose Font", font=("Helvetica", 14)) font_label.grid(row=0, column=0, padx=10, sticky=W) size_label = Label(bottom_frame, text="Font Size", font=("Helvetica", 14)) size_label.grid(row=0, column=1, sticky=W) style_label = Label(bottom_frame, text="Font Style", font=("Helvetica", 14)) style_label.grid(row=0, column=2, padx=10, sticky=W) # Add Listbox my_listbox = Listbox(bottom_frame, selectmode=SINGLE, width=40) my_listbox.grid(row=1, column=0, padx=10) # Size Listbox font_size_listbox = Listbox(bottom_frame, selectmode=SINGLE, width=20 ) font_size_listbox.grid(row=1, column=1) # Style Listbox font_style_listbox = Listbox(bottom_frame, selectmode=SINGLE, width=20 ) font_style_listbox.grid(row=1, column=2, padx=10) # Add Font Families To Listbox for f in font.families(): my_listbox.insert('end', f) # Add Sizes to Size Listbox font_sizes = [8, 10, 12, 14, 16, 18, 20, 36, 48] for size in font_sizes: font_size_listbox.insert('end', size) # Add Styles To Style Listbox font_styles = ["Regular", "Bold", "Italic", "Bold/Italic", "Underline", "Strike"] for style in font_styles: font_style_listbox.insert('end', style) # Bind The Listbox my_listbox.bind('', font_chooser) font_size_listbox.bind(' ', font_size_chooser) font_style_listbox.bind(' ', font_style_chooser) root.mainloop()
Add comment