Of course! In Python, a "pushbutton" most commonly refers to a button in a graphical user interface (GUI). The most popular library for creating GUIs in Python is Tkinter, as it comes built-in with Python.

I'll show you how to create a pushbutton using Tkinter, and then I'll briefly mention other popular GUI libraries.
The Basics with Tkinter
This is the simplest way to get started. We'll create a window with a button that prints a message to the console when clicked.
Simple Example: Printing to Console
import tkinter as tk
from tkinter import messagebox
# 1. Create the main window
window = tk.Tk()
window.title("My First Button App")
window.geometry("300x200") # Set the window size
# 2. Define the function that the button will call
def on_button_click():
"""This function is executed when the button is clicked."""
print("Button was clicked!")
# You can also show a pop-up message box
# messagebox.showinfo("Info", "You clicked the button!")
# 3. Create the button widget
# - `text`: The text displayed on the button.
# - `command`: The function to be called when the button is clicked.
# - `font`: (Optional) Sets the font for the button text.
# - `bg` and `fg`: (Optional) Set the background and foreground (text) colors.
button = tk.Button(
window,
text="Click Me!",
command=on_button_click,
font=("Arial", 14),
bg="lightblue",
fg="darkblue"
)
# 4. Place the button in the window
# .pack() is a simple geometry manager that places widgets one after another.
button.pack(pady=20, padx=20) # Add some padding around the button
# 5. Start the event loop (this makes the window appear and listen for events)
window.mainloop()
How to run this code:
- Save it as a Python file (e.g.,
my_button.py). - Run it from your terminal:
python my_button.py
You will see a window with a button. When you click it, "Button was clicked!" will appear in your terminal.

Making the Button Do More
Buttons are most useful when they interact with other parts of your application, like changing text or updating an entry field.
Example: Updating a Label
This example shows how to change the text of a label when a button is clicked.
import tkinter as tk
# Create the main window
window = tk.Tk()
window.title("Button Updates Label")
window.geometry("400x250")
# A variable to hold the label's text. Using a StringVar is the Tkinter way
# to automatically update a widget's text when the variable changes.
label_text = tk.StringVar()
label_text.set("Hello, World!") # Initial text
# Create a label widget
label = tk.Label(
window,
textvariable=label_text, # Link the label to our variable
font=("Helvetica", 18)
)
label.pack(pady=20)
# Define the function to update the label's text
def update_label_text():
label_text.set("The button was clicked!")
# Create the button
update_button = tk.Button(
window,
text="Update Label",
command=update_label_text
)
update_button.pack(pady=10)
# Start the event loop
window.mainloop()
Advanced: Passing Arguments to the Button Command
A common challenge is that the command option for a button can only accept a function name without arguments. If you need to pass arguments, you have a few options.
Method A: Using a Lambda Function (Most Common)
This is a quick and easy way to pass arguments. A lambda creates a small, anonymous function on the fly.

import tkinter as tk
window = tk.Tk()
window.title("Arguments with Lambda")
def button_action(color):
print(f"The {color} button was clicked!")
# Create multiple buttons, each passing a different argument
red_button = tk.Button(window, text="Red", command=lambda: button_action("Red"))
red_button.pack(side="left", expand=True, fill="both", padx=5, pady=5)
blue_button = tk.Button(window, text="Blue", command=lambda: button_action("Blue"))
blue_button.pack(side="left", expand=True, fill="both", padx=5, pady=5)
green_button = tk.Button(window, text="Green", command=lambda: button_action("Green"))
green_button.pack(side="left", expand=True, fill="both", padx=5, pady=5)
window.mainloop()
Method B: Using functools.partial
This is another clean way to handle arguments and can sometimes be more readable than a complex lambda.
import tkinter as tk
from functools import partial # Import the partial function
window = tk.Tk()
window.title("Arguments with partial")
def button_action(color):
print(f"The {color} button was clicked!")
# Create a "partially applied" function with one argument already filled in
action_for_red = partial(button_action, "Red")
action_for_blue = partial(button_action, "Blue")
red_button = tk.Button(window, text="Red", command=action_for_red)
red_button.pack(side="left", expand=True, fill="both", padx=5, pady=5)
blue_button = tk.Button(window, text="Blue", command=action_for_blue)
blue_button.pack(side="left", expand=True, fill="both", padx=5, pady=5)
window.mainloop()
Other Popular GUI Libraries
While Tkinter is great for beginners and simple apps, other libraries offer more modern looks and advanced features.
| Library | Description | Best For |
|---|---|---|
| PyQt / PySide | Wrappers for the powerful Qt framework. Very professional, feature-rich, and used for large-scale applications. | Complex desktop applications, professional software, cross-platform apps with native look-and-feel. |
| Kivy | An open-source Python library for rapid development of applications that make use of innovative user interfaces. | Multi-touch applications, mobile apps (Android/iOS), and apps with custom, modern UIs. |
| CustomTkinter | A modern-looking UI library for Tkinter. It's a drop-in replacement for standard Tkinter widgets, giving them a much better appearance. | People who want the simplicity of Tkinter but with a more modern and polished look. |
Example with CustomTkinter
First, you need to install it: pip install customtkinter
import customtkinter as ctk
# Set appearance mode and default color theme
ctk.set_appearance_mode("System") # Modes: "System" (standard), "Dark", "Light"
ctk.set_default_color_theme("blue") # Themes: "blue" (standard), "green", "dark-blue"
# Create the main window
app = ctk.CTk()"CustomTkinter Button")
app.geometry("400x300")
# Define the function
def button_click_event():
print("Custom button clicked!")
# You can also change the text of a label
my_label.configure(text="Button Clicked!")
# Create a label
my_label = ctk.CTkLabel(app, text="Hello, CustomTkinter!")
my_label.pack(pady=20, padx=10)
# Create a button
# CustomTkinter buttons have more options like `corner_radius` and `fg_color`
my_button = ctk.CTkButton(
master=app,
text="Click Me!",
command=button_click_event,
corner_radius=10,
fg_color="#1f538d", # Custom color
hover_color="#143a5c" # Custom hover color
)
my_button.pack(pady=20, padx=40)
# Start the event loop
app.mainloop()
Summary
- For beginners and simple apps, start with Tkinter. It's built-in and powerful enough for many tasks.
- To pass arguments to your button's function, use a
lambdaorfunctools.partial. - For modern-looking apps with Tkinter's simplicity, try CustomTkinter.
- For complex, professional applications, learn PyQt/PySide or Kivy.
