widget.bind(event,handler)
# encoding: utf-8from tkinter import *
root = tk()
def callback(event):
print "clicked at", event.x, event.y
frame = frame(root, width=100, height=100)
frame.bind("", callback)
frame.pack()
root.mainloop()
# encoding: utf-8from tkinter import *
root = tk()
def key(event):
print "pressed", repr(event.char)
def callback(event):
print "clicked at", event.x, event.y
frame = frame(root, width=100, height=100)
frame.focus_set()
frame.bind("", key)
frame.bind("", callback)
frame.pack()
root.mainloop()
type欄位是最重要的,它指出了事件的種類,可以指定為button,key或者enter,configure等等。modifier和detail欄位可以提供一些附加資訊,在大多數情況下可以不指定。還有很多方法可以簡化事件字串,比如:為了匹配乙個鍵盤鍵,你可以省略尖角括號,直接用 鍵 即可。除非它是空格 , 或本身就是尖括號。
讓我們來看看最常用的事件格式:
事件格式:
乙個滑鼠點選事件。1代表左鍵,2代表中鍵,3代表右鍵。當你在乙個widget上點選滑鼠按鍵,tkinter會自動捕獲並觸發event,注意,當按鍵被抬起時才會執行handler。滑鼠的位置(相對於widge)x,y會被發往event物件傳入handler。你也可以這樣:,<1>,它們是等價的。我比較喜歡這種方式。
1滑鼠拖動事件。1代表按下左鍵拖動,2代表中鍵,3代表右鍵。同樣的,滑鼠的x,y會以event物件方式被送往handler。
滑鼠按下之後釋放
雙擊滑鼠
注意,這裡是滑鼠指標進入到widget裡,並不是代表按下鍵盤上的enter鍵。
和上面的進入對應,滑鼠離開widget。
這些按鍵都和鍵盤上的一一對應。
隨便乙個按鍵,鍵值會以char的格式放入event物件。
a b c ... 1 2 ... 對應鍵盤上的按鍵
這個關鍵了,如果widget的大小改變了,或者是位置,新的大小(width和height)會打包到event發往handler。
事件物件
事件物件是獨立的python例項,有很多屬性。
物件屬性:
widget 產生event的例項,不是名字,所有物件擁有
x,y 滑鼠位置,單位:畫素
x_root,y_root 滑鼠相對於螢幕左上角的位置,畫素
char 僅鍵盤事件,string
num 按鈕num,僅滑鼠事件
width,height widget新大小
type 事件型別
例項繫結和類繫結
上面我們用的繫結方法是繫結到乙個例項物件上,這就意味著,如果新建乙個例項,它是沒有繫結事件的。
實際上,tkinter允許你將事件繫結到類上,甚至是繫結到程式本身。你可以建立四個層面的繫結:
繫結到widget instance 使用bind方法
繫結到widget的toplevel windows,頂層視窗,也是用bind
繫結到widget class,使用bind_class
比如,你可以使用bind_all來建立乙個f1鍵的繫結,這樣你可以在任何地方開啟幫助。
widget.bind(event,handler)
from tkinter import *
root = tk()
defcallback
(event):
print
"clicked at", event.x, event.y
frame = frame(root, width=100, height=100)
frame.bind("", callback)
frame.pack()
root.mainloop()
189
10
from tkinter import *
root = tk()
defkey
(event):
print
"pressed", repr(event.char)
defcallback
(event):
print
"clicked at", event.x, event.y
frame = frame(root, width=100, height=100)
frame.bind("", key)
frame.bind("", callback)
frame.pack()
root.mainloop()
23
4567
繫結到widget的toplevel windows,頂層視窗,也是用bind
繫結到widget class,使用bind_class
C 自動觸發滑鼠 鍵盤事件
要在c 程式中觸發滑鼠 鍵盤事件必須要呼叫windows函式。一 滑鼠事件的觸發 1.引用windows函式mouse event 滑鼠事件 事件型別 x座標值 0 65535 y座標值 0 65535 滾動值 120乙個單位 不支援 dllimport user32.dll static exte...
通用滑鼠鍵盤
該程式通過並行機制處理滑鼠和鍵盤的訊息,為了簡化程式裁減了一些 該程式可用為基礎在該程式上新增 可用於文字編輯,遊戲和其他滑鼠鍵盤通用的程式.include include include include include union regs regs unsigned size void far ...
滑鼠鍵盤學習
出現問題地方 1 label 和pushbutton上面無法顯示中文,出現亂碼 待解決 在main.cpp中已加入qtext odec setcodecfortr qtextcodec codecforlocale 2 在鍵入兩個函式 void mousemoveevent qmouseevent ...