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.
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ả:
Ví dụ về nút hình ảnh
Chương trình sau đây hiển thị một nút hình ảnh:
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ả
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ả
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ả.