Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Gán hàm (Binding) trong Python Tkinter


Trong Python, tkinter là thư viện GUI dùng cho nhiều lập trình giao diện. Các ứng dụng này hữu ích để xây dựng ứng dụng desktop. Trong bài này, chúng ta sẽ xem một khía cạnh của lập trình GUI gọi là gán hàm (Binding functions). Đây là việc gán sự kiện cho hàm và phương thức để khi sự kiện xảy ra, hàm cụ thể đó được thực thi.

Gán sự kiện bàn phím

Trong ví dụ dưới đây, chúng ta gán việc nhấn bất kỳ phím nào trên bàn phím với một hàm được thực thi. Khi cửa sổ Tkinter GUI mở ra, ta có thể nhấn bất kỳ phím nào và nhận thông báo rằng phím đã được nhấn.

Ví dụ

from tkinter import *
# Nhấn một phím trên bàn phím
def PressAnyKey(label):
    value = label.char
    print(value, ' A button is pressed')
base = Tk()
base.geometry('300x150')
base.bind('', lambda i: PressAnyKey(i))
mainloop()

Kết quả

Chạy mã trên cho kết quả sau:

Gán hàm (Binding) trong Python Tkinter

Gán sự kiện click chuột

Trong ví dụ dưới đây, ta thấy cách gán sự kiện click chuột trên cửa sổ tkinter cho một lời gọi hàm. Ở ví dụ này, ta gọi các sự kiện để hiển thị double-click chuột trái, click chuột phải và click chuột giữa (cuộn) tại vị trí trên canvas tkinter nơi các nút được nhấn.

Ví dụ

from tkinter import *
from tkinter.ttk import *
# tạo cửa sổ tkinter hoặc root window
base = Tk()
base.geometry('300x150')
# Nhấn nút cuộn chuột thì hàm sẽ được gọi
def scroll(label):
    print('Scroll button clicked at x = % d, y = % d' % (label.x, label.y))
# Nhấn nút chuột phải thì hàm sẽ được gọi
def right_click(label):
    print('right button clicked at x = % d, y = % d' % (label.x, label.y))
# Nhấn double-click chuột trái thì hàm sẽ được gọi
def left_click(label):
    print('Double clicked left button at x = % d, y = % d' % (label.x, label.y))
Function = Frame(base, height=100, width=200)
Function.bind('', scroll)
Function.bind('', right_click)
Function.bind('', left_click)
Function.pack()
mainloop()

Kết quả

Chạy mã trên cho kết quả sau:

Gán hàm (Binding) trong Python Tkinter