Một ứng dụng Tkinter chạy hầu hết thời gian bên trong một vòng lặp sự kiện, được nhập thông qua phương thức mainloop. Nó chờ đợi các sự kiện xảy ra. Sự kiện có thể là thao tác nhấn phím hoặc chuột của người dùng
Tkinter cung cấp một cơ chế để lập trình viên xử lý các sự kiện. Đối với mỗi tiện ích, có thể liên kết các hàm và phương thức Python với một sự kiện
phụ tùng. liên kết [sự kiện, xử lý]
Nếu sự kiện được xác định xảy ra trong tiện ích, chức năng "xử lý" được gọi với một đối tượng sự kiện. mô tả sự kiện
#!/usr/bin/python3 # write tkinter as Tkinter to be Python 2.x compatible from tkinter import * def hello[event]: print["Single Click, Button-l"] def quit[event]: print["Double Click, so let's stop"] import sys; sys.exit[] widget = Button[None, text='Mouse Clicks'] widget.pack[] widget.bind['', hello] widget.bind['', quit] widget.mainloop[]
Hãy lấy một ví dụ đơn giản khác, cho thấy cách sử dụng sự kiện chuyển động, i. e. nếu con chuột được di chuyển bên trong một widget
from tkinter import * def motion[event]: print["Mouse position: [%s %s]" % [event.x, event.y]] return master = Tk[] whatever_you_do = "Whatever you do will be insignificant, but it is very important that you do it.\n[Mahatma Gandhi]" msg = Message[master, text = whatever_you_do] msg.config[bg='lightgreen', font=['times', 24, 'italic']] msg.bind['',motion] msg.pack[] mainloop[]
Mỗi khi chúng ta di chuyển chuột trong tiện ích Tin nhắn, vị trí của con trỏ chuột sẽ được in ra. Khi chúng ta bỏ widget này thì hàm motion[] không được gọi nữa
Đào tạo Python trực tiếp
Thưởng thức trang này?
Nhìn thấy. Tổng quan về các khóa học Python trực tiếp
đăng ký tại đây
Sự kiện
Tkinter sử dụng cái gọi là chuỗi sự kiện để cho phép người dùng xác định sự kiện nào, cả cụ thể và chung, mà họ muốn liên kết với trình xử lý. Đây là "sự kiện" đối số đầu tiên của phương thức liên kết. Chuỗi sự kiện được đưa ra dưới dạng một chuỗi, sử dụng cú pháp sau
Trường loại là phần thiết yếu của trình xác định sự kiện, trong khi trường "công cụ sửa đổi" và "chi tiết" không bắt buộc và bị bỏ qua trong nhiều trường hợp. Chúng được sử dụng để cung cấp thông tin bổ sung cho "loại" đã chọn. Sự kiện "loại" mô tả loại sự kiện bị ràng buộc, e. g. các hành động như nhấp chuột, nhấn phím hoặc tiện ích có tiêu điểm đầu vào
EventDescriptionA mouse button is pressed with the mouse pointer over the widget. The detail part specifies which button, e.g. The left mouse button is defined by the event , the middle button by , and the rightmost mouse button by .xác định sự kiện cuộn lên trên chuột có hỗ trợ bánh xe và cuộn xuống
If you press down a mouse button over a widget and keep it pressed, Tkinter will automatically "grab" the mouse pointer. Further mouse events like Motion and Release events will be sent to the current widget, even if the mouse is moved outside the current widget. The current position, relative to the widget, of the mouse pointer is provided in the x and y members of the event object passed to the callback. You can use ButtonPress instead of Button, or even leave it out completely: , , and are all synonyms.
Chuột được di chuyển với một nút chuột được giữ. Để chỉ định nút chuột trái, giữa hoặc phải, hãy sử dụng , và tương ứng. Vị trí hiện tại của con trỏ chuột được cung cấp trong các thành viên x và y của đối tượng sự kiện được chuyển đến hàm gọi lại, i. e. Sự kiện. x, sự kiện. ySự kiện, nếu một nút được nhả ra. Để chỉ định nút chuột trái, giữa hoặc phải, hãy sử dụng , và tương ứng. Vị trí hiện tại của con trỏ chuột được cung cấp trong các thành viên x và y của đối tượng sự kiện được chuyển đến hàm gọi lại, i. e. Sự kiện. x, sự kiện. yTương tự như sự kiện Nút, xem ở trên, nhưng nút này được nhấp đúp thay vì nhấp một lần. Để chỉ định nút chuột trái, giữa hoặc phải, hãy sử dụng , và tương ứngYou can use Double or Triple as prefixes. Note that if you bind to both a single click [] and a double click [], both bindings will be called.
Con trỏ chuột vào widgetChú ý. Điều này không có nghĩa là người dùng đã nhấn phím Enter. được sử dụng cho mục đích này