APY-03 GUI Using Tkinter
Introduction
-
Tkinter is the standard Python interface to the Tk GUI (Graphical User Interface) toolkit.
-
It is included with Python and is cross-platform (works on Windows, macOS, and Linux).
-
Tkinter is easy to use and simple
-
Tkinter supports a wide range of widgets for building interactive interfaces.
-
Tkinter Setup:
import tkinter as tk
root = tk.Tk()
root.mainloop()
Text Widget
- Used for multi-line text input and display.
- Ideal for displaying or accepting large amounts of text, such as notes or messages.
text_widget = tk.Text(root, height=10, width=30)
text_widget.pack()
- Display images (PNG, GIF) in your application.
from tkinter import PhotoImage
image = PhotoImage(file='image.png')
label = tk.Label(root, image=image)
label.pack()
- Used for user interaction via clicks.
def on_click():
print("Button clicked!")
button = tk.Button(root, text="Click Me", command=on_click)
button.pack()
Entry Widget
- Used for single-line text input.
- Collects user input such as names, search terms, etc
entry = tk.Entry(root)
entry.pack()
- Used to display text or images.
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()
- Displays a list of items from which the user can select.
listbox = tk.Listbox(root)
listbox.pack()
listbox.insert(tk.END, "Item 1")
listbox.insert(tk.END, "Item 2")
- Creates a menu bar with options.
- Build drop-down menus for actions like "File", "Edit", etc.
menu = tk.Menu(root)
root.config(menu=menu)
file_menu = tk.Menu(menu)
menu.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="Exit", command=root.quit)
- Allows the user to select one option from a list.
var = tk.StringVar()
radio_button1 = tk.Radiobutton(root, text="Option 1", variable=var,
value="1")
radio_button2 = tk.Radiobutton(root, text="Option 2", variable=var,
value="2")
radio_button1.pack()
radio_button2.pack()
- Allows the user to select one or more options.
var1 = tk.IntVar()
check_button = tk.Checkbutton(root, text="Option 1", variable=var1)
check_button.pack()
- Adds scrolling functionality to widgets like Text or Listbox.
scrollbar = tk.Scrollbar(root)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)
Text Message Box Widget
- Used to display messages in a text box
message_box = tk.Message(root, text="This is a text message box")
message_box.pack()
- A container widget used to organize other widgets.
- Organize and group widgets together for better layout management.
frame = tk.Frame(root)
frame.pack()
button1 = tk.Button(frame, text="Button 1")
button2 = tk.Button(frame, text="Button 2")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
Controlling Layout with Geometry Manager
- Geometry Managers in Tkinter:
- pack(): Automatically arranges widgets.
label = tk.Label(root, text="Pack Example")
label.pack()
- grid(): Organizes widgets in a table-like structure.
label = tk.Label(root, text="Grid Example")
label.grid(row=0, column=0)
- place(): Places widgets at an absolute position.
label = tk.Label(root, text="Place Example")
label.place(x=100, y=100)
Making Application Interactive
- Bind events to widgets (e.g., button click, key press).
- Use command to link buttons to functions.
- Collect data from Entry and ListBox widgets to modify the interface dynamically.
def update_label():
label.config(text=entry.get())
label = tk.Label(root, text="Hello!")
label.pack()
entry = tk.Entry(root)
entry.pack()
button = tk.Button(root, text="Update", command=update_label)
button.pack()
Questions
- Write a Python program to create a simple GUI application using Tkinter with a label and a button. (5)
- Discuss the purpose of the Entry widget in Tkinter. Write a program to take user input using it. (4)
- Explain the use of the ListBox widget in Tkinter. Create a program to display a list of options. (3)
- What is a Text widget in Tkinter? Write a program to demonstrate its use for creating a text editor. (5)
- Write a Python program to create a Tkinter GUI with checkboxes and radio buttons. (5)
- Explain the use of geometry managers (pack, grid, and place) in Tkinter with examples. (4)
- Design a GUI application using Tkinter to display an image and a message together. (4)
- Write a Python program to create a menu-driven application using the Menu widget in Tkinter. (5)
- What is a Scrollbar widget in Tkinter? Explain its purpose with an example program. (3)
- Create a Python application using Tkinter to demonstrate the use of frames for layout design. (4)
Resources
- Tkinter Tutorial (English)
- Tkinter Documentation