Tk - Sự kiện
Các sự kiện ở dạng đơn giản nhất được xử lý với sự trợ giúp của các lệnh. Một ví dụ đơn giản về xử lý sự kiện là xử lý sự kiện với nút và được hiển thị bên dưới:
#!/usr/bin/wish
proc myEvent { } {
puts "Event triggered"
}
pack [button .myButton1 -text "Button 1" -command myEvent]
Khi chúng ta chạy chương trình trên, chúng ta sẽ nhận được kết quả sau:
Một chương trình đơn giản để hiển thị sự kiện hoạt ảnh văn bản trì hoãn được hiển thị bên dưới:
#!/usr/bin/wish
proc delay {} {
for {set j 0} {$j < 100000} {incr j} {}
}
label .myLabel -text "Hello................" -width 25
pack .myLabel
set str "Hello................"
for {set i [string length $str]} {$i > -2} {set i [expr $i-1]} {
.myLabel configure -text [string range $str 0 $i]
update
delay
}
Khi chúng tôi chạy chương trình, chúng tôi sẽ nhận được kết quả sau theo cách hoạt hình:
Sự kiện sau khi trì hoãn
Cú pháp cho sự kiện sau khi trì hoãn được hiển thị bên dưới:
after milliseconds number command
Một chương trình đơn giản để hiển thị sau sự kiện trì hoãn được hiển thị bên dưới:
#!/usr/bin/wish
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
Khi chúng tôi chạy chương trình, chúng tôi sẽ nhận được kết quả sau sau một giây:
Bạn có thể hủy sự kiện bằng lệnh sau khi hủy như hình dưới đây -
#!/usr/bin/wish
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
after cancel addText
Sự kiện ràng buộc
Cú pháp cho ràng buộc sự kiện như hình dưới đây:
bind arguments
Ví dụ về sự kiện bàn phím
#!/usr/bin/wish
bind . {puts "Key Pressed: %K "}
Khi chúng tôi chạy chương trình và nhấn một ký tự X, chúng tôi sẽ nhận được kết quả sau:
Key Pressed: X
Ví dụ về sự kiện chuột
#!/usr/bin/wish
bind . {puts "Button %b Pressed : %x %y "}
Khi chúng ta chạy chương trình và nhấn nút chuột trái, chúng ta sẽ nhận được một kết quả tương tự như sau:
Button 1 Pressed : 89 90
Liên kết sự kiện với ví dụ về nút
#!/usr/bin/wish
proc myEvent { } {
puts "Event triggered"
}
pack [button .myButton1 -text "Button 1" -command myEvent]
bind . ".myButton1 invoke"
Khi chúng tôi chạy chương trình và nhấn enter, chúng tôi sẽ nhận được kết quả sau:
Event triggered