PYTHON CONCURRENCY
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Widget Button trong Tkinter

Trong lập trình giao diện người dùng với Tkinter, widget Button là một thành phần quan trọng và thường xuyên được sử dụng. Button cho phép người dùng tương tác với ứng dụng thông qua các hành động như nhấp chuột hoặc nhấn phím. Trong bài viết này, mình sẽ tìm hiểu về widget Button trong Tkinter, cách tạo và sử dụng nó để xây dựng các ứng dụng có giao diện thân thiện và dễ sử dụng.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Giới thiệu về Widget Button trong Tkinter

Widget Button trong Tkinter là một thành phần có thể nhấp được trong các ứng dụng. Thông thường, bạn có thể sử dụng văn bản hoặc hình ảnh để biểu thị hành động sẽ được thực hiện khi nhấp vào.

Các nút có thể hiển thị văn bản bằng một phông chữ duy nhất và văn bản này có thể trải dài nhiều dòng. Bạn cũng có thể gạch chân một trong các ký tự để tạo phím tắt.

Để gọi một hàm hoặc phương thức của một lớp tự động khi nút được nhấn, bạn gán thuộc tính command của nút cho hàm hoặc phương thức đó. Đây được gọi là cơ chế ràng buộc lệnh trong Tkinter.

Bài viết này được đăng tại [free tuts .net]

Để tạo một nút, bạn sử dụng hàm tạo ttk.Button như sau:

button = ttk.Button(master, **options)

Trong đó, master là widget cha của nút, text là nhãn của nút, và command là hàm sẽ được gọi tự động khi nút được nhấp vào.

Gọi lại hàm khi nhấn nút

Thuộc tính command liên kết hành động của nút với một hàm hoặc phương thức của lớp. Khi bạn nhấp hoặc nhấn nút, hàm hoặc phương thức đó sẽ được gọi tự động.

Để gán hàm gọi lại cho thuộc tính command, bạn có thể sử dụng biểu thức lambda:

ttk.Button(
   root, 
   text="Demo Button", 
   command=lambda: # làm gì đó
)

Các trạng thái của nút

Trạng thái mặc định của nút là normal. Trong trạng thái này, nút sẽ phản hồi các sự kiện chuột và bàn phím. Nút cũng có thể ở trạng thái disabled, khi đó nó sẽ bị mờ đi và không phản hồi các sự kiện.

Để điều khiển trạng thái của nút, bạn sử dụng phương thức state():

# đặt cờ disabled
button.state(['disabled'])

# bỏ cờ disabled
button.state(['!disabled'])

Ví dụ về nút trong Tkinter

Ví dụ đơn giản về nút trong Tkinter

Chương trình sau đây hiển thị một nút Exit. Khi bạn nhấp vào nó, chương trình sẽ kết thúc:

import tkinter as tk
from tkinter import ttk

# cửa sổ gốc
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Button Demo')

# nút exit
exit_button = ttk.Button(
    root,
    text='Exit',
    command=lambda: root.quit()
)

exit_button.pack(
    ipadx=5,
    ipady=5,
    expand=True
)

root.mainloop()

Kết quả:

Python Button Simple Button png

Ví dụ về nút hình ảnh

Chương trình sau đây hiển thị một nút hình ảnh:

download png

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo

# Cửa sổ chính
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Demo Nút Ảnh')

# Hàm xử lý khi nút được nhấn
def tai_xuong():
    showinfo(
        title='Thông tin',
        message='Bạn đã nhấn nút tải xuống!'
    )

# Tạo đối tượng hình ảnh từ file ảnh
tai_xuong_icon = tk.PhotoImage(file='./assets/download.png')
tai_xuong_button = ttk.Button(
    root,
    image=tai_xuong_icon,
    command=tai_xuong
)

# Hiển thị nút trên cửa sổ
tai_xuong_button.pack(
    ipadx=5,
    ipady=5,
    expand=True
)

# Vòng lặp chính để chạy ứng dụng
root.mainloop()

Kết quả
Python Button Image Button png

Giải thích cách hoạt động:

  • Đầu tiên, tạo một đối tượng mới của lớp tk.PhotoImage để tham chiếu đến file hình ảnh ./assets/download.png.

  • Thứ hai, tạo một đối tượng ttk.Button và gán hình ảnh từ tk.PhotoImage vào tùy chọn image của nút.

  • Thứ ba, gán một hàm cho tùy chọn command. Khi bạn nhấn nút, hàm tai_xuong sẽ được gọi, hiển thị một hộp thoại thông báo với nội dung "Bạn đã nhấn nút tải xuống!".

Hiển thị cả văn bản và hình ảnh trên một nút

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo


# cửa sổ gốc
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Image Button Demo')


# hàm xử lý khi nhấn nút download
def download_clicked():
    showinfo(
        title='Information',
        message='Download button clicked!'
    )


download_icon = tk.PhotoImage(file='./assets/download.png')

download_button = ttk.Button(
    root,
    image=download_icon,
    text='Download',
    compound=tk.LEFT,
    command=download_clicked
)

download_button.pack(
    ipadx=5,
    ipady=5,
    expand=True
)


root.mainloop()

Kết quả
Python Button Image and Text Button png

Kết bài

Như vậy, đã cùng nhau tìm hiểu cách sử dụng widget Button trong Tkinter, từ cách tạo nút đơn giản đến việc hiển thị hình ảnh và văn bản trên nút. Với lớp ttk.Button(), bạn có thể tạo ra các nút có tính năng và giao diện đa dạng, đồng thời dễ dàng gán các hành động cho sự kiện nhấp chuột thông qua thuộc tính command. Bằng cách sử dụng tk.PhotoImage() và thuộc tính compound, bạn có thể tích hợp hình ảnh và văn bản trên cùng một nút, giúp tăng tính thẩm mỹ và trực quan cho ứng dụng. Hy vọng qua bài viết này, bạn đã có cái nhìn rõ hơn về cách sử dụng widget Button trong Tkinter và có thể áp dụng vào các dự án của mình một cách hiệu quả.

Cùng chuyên mục:

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Cách nạp dữ liệu Machine Learning từ File trong Python

Cách nạp dữ liệu Machine Learning từ File trong Python

Hướng dẫn sử dụng Google Sheets API với Python

Hướng dẫn sử dụng Google Sheets API với Python

Xây dựng  web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn viết Snake Game bằng Python

Hướng dẫn viết Snake Game bằng Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng Python Debugger với hàm breakpoint()

Cách sử dụng Python Debugger với hàm breakpoint()

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hỗ trợ Async trong Django 3.1

Hỗ trợ Async trong Django 3.1

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

Ý nghĩa của if __name__ ==

Ý nghĩa của if __name__ == "__main__" trong Python

Cách xóa phần tử trong danh sách Python

Cách xóa phần tử trong danh sách Python

Top