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:

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn toàn diện về module datetime trong Python

Hướng dẫn toàn diện về module datetime trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Từ khóa yield trong Python

Từ khóa yield trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Định dạng chuỗi Strings trong Python

Định dạng chuỗi Strings trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Làm việc với các biến môi trường trong Python

Làm việc với các biến môi trường trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa iterator và iterable trong Python

Sự khác biệt giữa iterator và iterable trong Python

Cách làm việc với file tarball/tar trong Python

Cách làm việc với file tarball/tar trong Python

Chuyển đổi kiểu dữ liệu trong Python

Chuyển đổi kiểu dữ liệu trong Python

Sự khác biệt giữa toán tử == và is trong Python

Sự khác biệt giữa toán tử == và is trong Python

Làm việc với file ZIP trong Python

Làm việc với file ZIP trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Sự khác biệt giữa byte objects và string trong Python

Sự khác biệt giữa byte objects và string trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format  trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Top