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 sử dụng lớp QTreeWidget của PyQt

Cách sử dụng lớp QTreeWidget của PyQt

Cách sử dụng lớp QTableWidget để tạo một bảng

Cách sử dụng lớp QTableWidget để tạo một bảng

Cách sử dụng lớp QListWidget trong Python

Cách sử dụng lớp QListWidget trong Python

Cách dùng lớp QStatusBar trong PyQt để tạo thanh status bar

Cách dùng lớp QStatusBar trong PyQt để tạo thanh status bar

Cách dùng lớp QDockWidget của PyQt để tạo một widget

Cách dùng lớp QDockWidget của PyQt để tạo một widget

Cách dùng lớp PyQt QToolBar để tạo các widget toolbar

Cách dùng lớp PyQt QToolBar để tạo các widget toolbar

Cách sử dụng lớp PyQt QMenu để tạo menu

Cách sử dụng lớp PyQt QMenu để tạo menu

Cách sử dụng lớp QMainWindow của PyQt để tạo cửa sổ

Cách sử dụng lớp QMainWindow của PyQt để tạo cửa sổ

Cách dùng lớp PyQt QFileDialog để tạo hộp thoại chọn file

Cách dùng lớp PyQt QFileDialog để tạo hộp thoại chọn file

Cách dùng lớp PyQt QInputDialog để tạo một hộp thoại nhập liệu

Cách dùng lớp PyQt QInputDialog để tạo một hộp thoại nhập liệu

Cách sử dụng lớp PyQt QMessageBox để tạo một hộp thoại

Cách sử dụng lớp PyQt QMessageBox để tạo một hộp thoại

Cách sử dụng lớp PyQt QProgressBar để tạo một widget progress bar

Cách sử dụng lớp PyQt QProgressBar để tạo một widget progress bar

Cách dùng lớp PyQt QTextEdit để tạo một widget cho phép chỉnh sửa

Cách dùng lớp PyQt QTextEdit để tạo một widget cho phép chỉnh sửa

Cách dùng lớp PyQt QGroupBox để tạo một khung nhóm với tiêu đề

Cách dùng lớp PyQt QGroupBox để tạo một khung nhóm với tiêu đề

Cách dùng lớp PyQt QTabWidget để tạo một widget dạng tab

Cách dùng lớp PyQt QTabWidget để tạo một widget dạng tab

Cách dùng PyQt QWidget để làm container chứa các widget khác.

Cách dùng PyQt QWidget để làm container chứa các widget khác.

Cách sử dụng lớp PyQt QSlider để tạo một widget thanh trượt (slider).

Cách sử dụng lớp PyQt QSlider để tạo một widget thanh trượt (slider).

Cách tạo một widget nhập ngày và giờ sử dụng PyQt QDateTimeEdit

Cách tạo một widget nhập ngày và giờ sử dụng PyQt QDateTimeEdit

Cách tạo một widget nhập giờ sử dụng lớp PyQt QTimeEdit

Cách tạo một widget nhập giờ sử dụng lớp PyQt QTimeEdit

Cách tạo một widget nhập ngày sử dụng lớp PyQt QDateEdit

Cách tạo một widget nhập ngày sử dụng lớp PyQt QDateEdit

Top