Tkinter模塊("Tk 接口")是Python的標準Tk GUI工具包的接口.Tk和Tkinter能夠在大多數的Unix平臺下使用,一樣能夠應用在Windows和Macintosh系統裏.Tk8.0的後續版本能夠實現本地窗口風格,並良好地運行在絕大多數平臺中。php
目錄:
一、簡單實例 二、Label控件 三、Button控件 四、Entry控件 五、點擊按鈕輸出輸入框中的內容 六、Text控件 七、帶滾動條的Text 八、Checkbutton多選框控件 九、Radiobutton單選框 十、Listbox控件一 十一、Listbox控件二 十二、Listbox控件三 1三、Listbox四 1四、Scale控件 1五、Spinbox控件 1六、Menu頂層菜單 1七、Menu鼠標右鍵菜單 1八、Combobox下拉控件 1九、Frame控件 20、表格數據 2一、樹狀數據 2二、絕對佈局 2三、相對佈局 2四、表格佈局 2五、鼠標點擊事件 2六、鼠標移動事件 2七、鼠標釋放事件 2八、進入和離開事件 2九、響應全部按鍵的事件 30、響應特殊按鍵事件 3一、指定按鍵事件 3二、組合按鍵事件
下面的代碼是建立出一個窗口,其餘的操做就在這個平臺上進行。執行以後會在桌面彈出一個窗口,窗口的標題就是代碼中設置的win.title。這裏說一下,我使用的版本是python3.6。後面的內容儘可能按順序看,後面的控件也許用到前面寫到的東西。java
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 import tkinter 5
6
7 # 建立主窗口
8 win = tkinter.Tk() 9 # 設置標題
10 win.title("yudanqu") 11 # 設置大小和位置
12 win.geometry("400x400+200+50") 13
14 # 進入消息循環,能夠寫控件
15
16 win.mainloop()
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 import tkinter 5
6 win = tkinter.Tk() 7 win.title("yudanqu") 8 win.geometry("400x400+200+50") 9
10 '''
11 Label:標籤控件,能夠顯示文本 12 '''
13 # win:父窗體
14 # text:顯示的文本內容
15 # bg:背景色
16 # fg:字體顏色
17 # font:字體
18 # wraplength:指定text文本中多寬以後換行
19 # justify:設置換行後的對齊方式
20 # anchor:位置 n北,e東,w西,s南,center居中;還能夠寫在一塊兒:ne東北方向
21 label = tkinter.Label(win, 22 text="this is a word", 23 bg="pink", fg="red", 24 font=("黑體", 20), 25 width=20, 26 height=10, 27 wraplength=100, 28 justify="left", 29 anchor="ne") 30
31 # 顯示出來
32 label.pack() 33
34
35 win.mainloop()
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 import tkinter 5
6
7 def func(): 8 print("aaaaaaaaaaaaaaaaaaaaaaa") 9
10
11 win = tkinter.Tk() 12 win.title("yudanqu") 13 win.geometry("400x400+200+50") 14
15
16 # 建立按鈕
17 button1 = tkinter.Button(win, text="按鈕", command=func, width=10, height=10) 18 button1.pack() 19
20 button2 = tkinter.Button(win, text="按鈕", command=lambda: print("bbbbbbbbbbbb")) 21 button2.pack() 22
23 button3 = tkinter.Button(win, text="退出", command=win.quit) 24 button3.pack() 25
26 win.mainloop()
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 import tkinter 5
6 win = tkinter.Tk() 7 win.title("yudanqu") 8 win.geometry("400x400+200+50") 9
10 '''
11 Entry:輸入控件,用於顯示簡單的文本內容 12 '''
13
14 # 密文顯示
15 entry1 = tkinter.Entry(win, show="*") # show="*" 能夠表示輸入密碼
16 entry1.pack() 17
18 # 綁定變量
19 e = tkinter.Variable() 20
21 entry2 = tkinter.Entry(win, textvariable=e) 22 entry2.pack() 23
24 # e就表明輸入框這個對象
25 # 設置值
26 e.set("wewewewewewe") 27 # 取值
28 print(e.get()) 29 print(entry2.get()) 30
31 win.mainloop()
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 import tkinter 4
5 win = tkinter.Tk() 6 win.title("yudanqu") 7 win.geometry("400x400+200+50") 8
9 def showinfo(): 10 # 獲取輸入的內容
11 print(entry.get()) 12
13 entry = tkinter.Entry(win) 14 entry.pack() 15
16 button = tkinter.Button(win, text="按鈕", command=showinfo) 17 button.pack() 18
19 win.mainloop()
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 import tkinter 4
5 win = tkinter.Tk() 6 win.title("yudanqu") 7 win.geometry("400x400+200+50") 8
9 '''
10 文本控件:用於顯示多行文本 11 '''
12
13 # height表示的是顯示的行數
14 text = tkinter.Text(win, width=30, height=10) 15 text.pack() 16
17 str = '''蓋聞天地之數,有十二萬九千六百歲爲一元。將一元分爲十二會,乃子、醜、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每會該一萬八百歲。且就一日而論:子時得陽氣,而醜則雞鳴;寅不通光,而卯則日出;辰時食後,而巳則挨排;日午天中,而未則西蹉;申時晡而日落酉;戌黃昏而人定亥。譬於大數,若到戌會之終,則天地昏蒙而萬物否矣。再去五千四百歲,交亥會之初,則當黑暗,而兩間人物俱無矣,故曰混沌。又五千四百歲,亥會將終,貞下起元,近子之會,而復逐漸開明。邵康節曰:「冬至子之半,天心無改移。一陽初動處,萬物未生時。」到此,天始有根。再五千四百歲,正當子會,輕清上騰,有日,有月,有星,有辰。日、月、星、辰,謂之四象。故曰,天開於子。又經五千四百歲,子會將終,近醜之會,而逐漸堅實。易曰:「大哉乾元!至哉坤元!萬物資生,乃順承天。」至此,地始凝結。再五千四百歲,正當醜會,重濁下凝,有水,有火,有山,有石,有土。水、火、山、石、土謂之五形。故曰,地闢於醜。又經五千四百歲,醜會終而寅會之初,發生萬物。'''
18
19 text.insert(tkinter.INSERT, str) 20
21 win.mainloop()
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4
5 import tkinter 6
7 win = tkinter.Tk() 8 win.title("yudanqu") 9 # win.geometry("400x400+200+50")
10
11 '''
12 文本控件:用於顯示多行文本 13 '''
14
15 # 建立滾動條
16 scroll = tkinter.Scrollbar() 17
18 text = tkinter.Text(win, width=30, height=10) 19 # side放到窗體的哪一側, fill填充
20 scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y) 21 text.pack(side=tkinter.LEFT, fill=tkinter.Y) 22 # 關聯
23 scroll.config(command=text.yview) 24 text.config(yscrollcommand=scroll.set) 25
26 text.pack() 27
28 str = '''蓋聞天地之數,有十二萬九千六百歲爲一元。將一元分爲十二會,乃子、醜、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每會該一萬八百歲。且就一日而論:子時得陽氣,而醜則雞鳴;寅不通光,而卯則日出;辰時食後,而巳則挨排;日午天中,而未則西蹉;申時晡而日落酉;戌黃昏而人定亥。譬於大數,若到戌會之終,則天地昏蒙而萬物否矣。再去五千四百歲,交亥會之初,則當黑暗,而兩間人物俱無矣,故曰混沌。又五千四百歲,亥會將終,貞下起元,近子之會,而復逐漸開明。邵康節曰:「冬至子之半,天心無改移。一陽初動處,萬物未生時。」到此,天始有根。再五千四百歲,正當子會,輕清上騰,有日,有月,有星,有辰。日、月、星、辰,謂之四象。故曰,天開於子。又經五千四百歲,子會將終,近醜之會,而逐漸堅實。易曰:「大哉乾元!至哉坤元!萬物資生,乃順承天。」至此,地始凝結。再五千四百歲,正當醜會,重濁下凝,有水,有火,有山,有石,有土。水、火、山、石、土謂之五形。故曰,地闢於醜。又經五千四百歲,醜會終而寅會之初,發生萬物。'''
29
30 text.insert(tkinter.INSERT, str) 31
32 win.mainloop()
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 import tkinter 4
5 win = tkinter.Tk() 6 win.title("yudanqu") 7 win.geometry("400x400+200+50") 8
9 def updata(): 10 message = ""
11 if hobby1.get() ==True: 12 message += "money\n"
13 if hobby2.get() == True: 14 message += "power\n"
15 if hobby3.get() == True: 16 message += "people\n"
17
18 # 清空text中全部內容
19 text.delete(0.0, tkinter.END) 20 text.insert(tkinter.INSERT, message) 21
22 # 要綁定的變量
23 hobby1 = tkinter.BooleanVar() 24 # 多選框
25 check1 = tkinter.Checkbutton(win, text="money", variable=hobby1, command=updata) 26 check1.pack() 27 hobby2 = tkinter.BooleanVar() 28 check2 = tkinter.Checkbutton(win, text="power", variable=hobby2, command=updata) 29 check2.pack() 30 hobby3 = tkinter.BooleanVar() 31 check3 = tkinter.Checkbutton(win, text="people", variable=hobby3, command=updata) 32 check3.pack() 33
34 text = tkinter.Text(win, width=50, height=5) 35 text.pack() 36
37 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 def updata(): 8 print(r.get()) 9
10 # 綁定變量,一組單選框要綁定同一個變量,就能區分出單選框了
11 r = tkinter.IntVar() 12
13 radio1 = tkinter.Radiobutton(win, text="one", value=1, variable=r, command=updata) 14 radio1.pack() 15 radio2 = tkinter.Radiobutton(win, text="two", value=2, variable=r, command=updata) 16 radio2.pack() 17
18 win.mainloop()
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 import tkinter 4
5 win = tkinter.Tk() 6 win.title("yudanqu") 7 win.geometry("400x400+200+50") 8
9 '''
10 列表框控件:能夠包含一個或多個文本框 11 做用:在listbox控件的小窗口顯示一個字符串 12 '''
13
14 # 建立一個listbox,添加幾個元素
15 lb = tkinter.Listbox(win, selectmode=tkinter.BROWSE) 16 lb.pack() 17
18 for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]: 19 # 按順序添加
20 lb.insert(tkinter.END, item) 21
22 # 在開始添加
23 lb.insert(tkinter.ACTIVE, "cool") 24
25 # 將列表當作一個元素添加
26 # lb.insert(tkinter.END, ["very good", "very nice"])
27
28 # 刪除:參數1爲開始的索引,參數2爲結束的索引,若是不指定參數2,只刪除第一個索引處的內容
29 lb.delete(1,3) 30
31 # 選中:參數1爲開始的索引,參數2爲結束的索引,若是不指定參數2,只選中第一個索引處的內容
32 lb.select_set(2,3) 33
34 # 取消選中:參數1爲開始的索引,參數2爲結束的索引,若是不指定參數2,只取消第一個索引處的內容
35 lb.select_clear(2) 36
37 # 獲取到列表中的元素個數
38 print(lb.size()) 39 # 獲取值
40 print(lb.get(2,3)) 41
42 # 返回當前的索引項,不是item元素
43 print(lb.curselection()) 44
45 # 判斷:一個選項是否被選中
46 print(lb.selection_includes(3)) 47
48 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 # 綁定變量
8 lbv = tkinter.StringVar() 9
10 # 與BORWSE類似,可是不支持鼠標按下後移動選中位置
11 lb = tkinter.Listbox(win, selectmode=tkinter.SINGLE, listvariable=lbv) 12 lb.pack() 13
14 for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]: 15 # 按順序添加
16 lb.insert(tkinter.END, item) 17
18 # 打印當前列表中的選型
19 print(lbv.get()) 20
21 # 設置選項
22 # lbv.set(("1","2","3"))
23
24 # 綁定事件
25 def myprint(event): 26 # print(lb.curselection()) # 返回下標
27 print(lb.get(lb.curselection())) # 返回值
28 lb.bind("<Double-Button-1>", myprint) 29
30 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 # win.geometry("400x400+200+50")
6
7 # EXTENDED:可使listbox支持shift和Ctrl
8 lb = tkinter.Listbox(win, selectmode=tkinter.EXTENDED) 9 lb.pack() 10
11 for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]: 12 # 按順序添加
13 lb.insert(tkinter.END, item) 14
15 # 滾動條
16 sc = tkinter.Scrollbar(win) 17 sc.pack(side=tkinter.RIGHT, fill=tkinter.Y) 18 # 配置
19 lb.configure(yscrollcommand=sc.set) 20 lb.pack(side=tkinter.LEFT, fill=tkinter.BOTH) 21 # 額外給屬性賦值
22 sc["command"] = lb.yview 23
24 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 # MULTIPLE支持多選
8 lb = tkinter.Listbox(win, selectmode=tkinter.MULTIPLE) 9 lb.pack() 10
11 for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]: 12 # 按順序添加
13 lb.insert(tkinter.END, item) 14
15 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 '''
8 供用戶經過拖拽指示器來改變變量的值,能夠水平,也能夠豎直 9 '''
10
11 # tkinter.HORIZONTAL水平
12 # tkinter.VERTICAL 豎直(默認)
13 # length:水平時表示寬度,豎直時表示高度
14 # tickintervar :選擇值將會爲該值得倍數
15
16 scale1 = tkinter.Scale(win, from_=0, to=100, orient=tkinter.HORIZONTAL, tickinterval=10, length=200) 17 scale1.pack() 18
19 # 設置值
20 scale1.set(20) 21
22 # 取值
23 # print(scale1.get())
24
25 def showNum(): 26 print(scale1.get()) 27 tkinter.Button(win, text="按鈕", command=showNum).pack() 28
29 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 '''
8 數值範圍控件 9 '''
10
11 # 綁定變量
12 v = tkinter.StringVar() 13
14 def updata(): 15 print(v.get()) 16
17 # increment:步長,默認爲1
18 # values要輸入一個元組 最好不要和from和to同時使用,並且步長也沒用
19 # command 只要值改變就會執行updata方法
20 sp = tkinter.Spinbox(win, from_=0, to=100, increment=5, 21 textvariable=v, command=updata) 22 # sp = tkinter.Spinbox(win, values=(0,2,4,6,8))
23 sp.pack() 24
25 # 賦值
26 v.set(20) 27 # 取值
28 print(v.get()) 29
30 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 # 菜單條
8 menubar = tkinter.Menu(win) 9 win.config(menu=menubar) 10
11 def func(): 12 print("**********") 13
14 # 建立一個菜單選項
15 menu1 = tkinter.Menu(menubar, tearoff=False) 16
17 # 給菜單選項添加內容
18 for item in ['python','c','java','c++', 'c#','php','B','退出']: 19 if item == '退出': 20 # 添加分割線
21 menu1.add_separator() 22 menu1.add_command(label=item, command=win.quit) 23 else: 24 menu1.add_command(label=item, command=func) 25
26 # 向菜單條上添加菜單選項
27 menubar.add_cascade(label='語言', menu=menu1) 28
29 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 # 菜單條
8 menubar = tkinter.Menu(win) 9
10 def func(): 11 print("**********") 12
13 # 菜單
14 menu = tkinter.Menu(menubar, tearoff=False) 15 # 給菜單選項添加內容
16 for item in ['python','c','java','c++', 'c#','php','B','退出']: 17 if item == '退出': 18 # 添加分割線
19 menu.add_separator() 20 menu.add_command(label=item, command=win.quit) 21 else: 22 menu.add_command(label=item, command=func) 23
24 menubar.add_cascade(label="語言", menu=menu) 25
26 def showMenu(event): 27 menubar.post(event.x_root, event.y_root) 28
29 win.bind("<Button-3>", showMenu) 30
31 win.mainloop()
1 import tkinter 2 from tkinter import ttk 3
4 win = tkinter.Tk() 5 win.title("yudanqu") 6 win.geometry("400x400+200+50") 7
8 # 綁定變量
9 cv = tkinter.StringVar() 10
11 com = ttk.Combobox(win, textvariable=cv) 12 com.pack() 13
14 # 設置下拉數據
15 com["value"] = ("黑龍江", "吉林", "遼寧") 16
17 # 設置默認值
18 com.current(0) 19
20 # 綁定事件
21
22 def func(event): 23 print(com.get()) 24 print(cv.get()) 25 com.bind("<<ComboboxSelected>>", func) 26
27 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 '''
8 框架控件:在桌面上顯示一個矩形區域,多做爲一個容器控件 9 '''
10
11 frm = tkinter.Frame(win) 12 frm.pack() 13
14 # left
15 frm_l = tkinter.Frame(frm) 16 tkinter.Label(frm_l, text="左上", bg="pink").pack(side=tkinter.TOP) 17 tkinter.Label(frm_l, text="左下", bg="blue").pack(side=tkinter.TOP) 18 frm_l.pack(side=tkinter.LEFT) 19
20 # right
21 frm_r = tkinter.Frame(frm) 22 tkinter.Label(frm_r, text="右上", bg="green").pack(side=tkinter.TOP) 23 tkinter.Label(frm_r, text="右下", bg="red").pack(side=tkinter.TOP) 24 frm_r.pack(side=tkinter.RIGHT) 25
26 win.mainloop()
1 import tkinter 2 from tkinter import ttk 3
4 win = tkinter.Tk() 5 win.title("yudanqu") 6 win.geometry("600x400+200+50") 7
8 # 表格
9 tree = ttk.Treeview(win) 10 tree.pack() 11
12 # 定義列
13 tree["columns"] = ("姓名","年齡","身高","體重") 14 # 設置列,列還不顯示
15 tree.column("姓名", width=100) 16 tree.column("年齡", width=100) 17 tree.column("身高", width=100) 18 tree.column("體重", width=100) 19
20 # 設置表頭
21 tree.heading("姓名", text="姓名-name") 22 tree.heading("年齡", text="年齡-age") 23 tree.heading("身高", text="身高-height") 24 tree.heading("體重", text="體重-weight") 25
26 # 添加數據
27 tree.insert("", 0, text="line1", values=("小鄭","34","177cm","70kg")) 28 tree.insert("", 1, text="line2", values=("小張","43","188cm","90kg")) 29
30 win.mainloop()
1 import tkinter 2 from tkinter import ttk 3
4 win = tkinter.Tk() 5 win.title("yudanqu") 6 win.geometry("400x400+200+50") 7
8 tree = ttk.Treeview(win) 9 tree.pack() 10
11 # 添加一級樹枝
12 treeF1 = tree.insert("",0,"中國",text= "中國Chi", values=("F1")) 13 treeF2 = tree.insert("",1,"美國",text= "美國USA", values=("F1")) 14 treeF3 = tree.insert("",2,"英國",text= "英國UK", values=("F1")) 15
16 # 二級樹枝
17 treeF1_1 = tree.insert(treeF1,0,"黑龍江",text="中國黑龍江",values=("F1_1")) 18 treeF1_2 = tree.insert(treeF1,1,"吉林",text="中國吉林",values=("F1_2")) 19 treeF1_3 = tree.insert(treeF1,2,"遼寧",text="中國遼寧",values=("F1_3")) 20
21 treeF2_1 = tree.insert(treeF2,0,"aaa",text="aaaa",values=("F2_1")) 22 treeF2_2 = tree.insert(treeF2,1,"bbb",text="bbbb",values=("F2_2")) 23 treeF2_3 = tree.insert(treeF2,2,"ccc",text="cccc",values=("F2_3")) 24
25 # 三級樹枝
26 treeF1_1_1 = tree.insert(treeF1_1,0,"哈爾濱",text="黑龍江哈爾濱") 27 treeF1_1_2 = tree.insert(treeF1_1,1,"五常",text="黑龍江五常") 28
29 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 label1 = tkinter.Label(win, text="good", bg="blue") 8 label2 = tkinter.Label(win, text="nice", bg="red") 9 label3 = tkinter.Label(win, text="cool", bg="green") 10
11 # 絕對佈局,窗口的變化對位置沒有影響
12 label1.place(x=10,y=10) 13 label2.place(x=50,y=50) 14 label3.place(x=100,y=100) 15
16 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 label1 = tkinter.Label(win, text="good", bg="blue") 8 label2 = tkinter.Label(win, text="nice", bg="red") 9 label3 = tkinter.Label(win, text="cool", bg="green") 10
11 # 相對佈局,窗體改變對控件有影響
12 label1.pack(fill=tkinter.Y, side=tkinter.LEFT) 13 label2.pack(fill=tkinter.X, side=tkinter.TOP) 14 label3.pack() 15
16 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 label1 = tkinter.Label(win, text="good", bg="blue") 8 label2 = tkinter.Label(win, text="nice", bg="red") 9 label3 = tkinter.Label(win, text="cool", bg="green") 10 label4 = tkinter.Label(win, text="handsome", bg="yellow") 11
12 # 表格佈局
13 label1.grid(row=0,column=0) 14 label2.grid(row=0,column=1) 15 label3.grid(row=1,column=0) 16 label4.grid(row=1,column=1) 17
18 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7
8 def func(event): 9 print(event.x, event.y) 10
11 # <Button-1> 鼠標左鍵
12 # <Button-2> 鼠標滾輪
13 # <Button-1> 鼠標右鍵
14 # <Double-Button-1> 鼠標雙擊左鍵
15 # <Triple-Button-1> 鼠標三擊左鍵
16
17 button1 = tkinter.Button(win, text="leftmouse button") 18 # bind 給控件綁定數據(參數一是綁定的事件,參數二是觸發事件的函數)
19 button1.bind("<Button-1>", func) 20 button1.pack() 21
22 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7
8 # <B1-Motion> 左鍵移動
9 # <B2-Motion> 中鍵移動
10 # <B3-Motion> 右鍵移動
11
12
13 label = tkinter.Label(win, text="*********") 14 label.pack() 15
16 def func(event): 17 print(event.x, event.y) 18
19 label.bind("<B1-Motion>", func) 20
21 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 # <ButtonRelease-1> 釋放鼠標左鍵
8 # <ButtonRelease-2> 釋放鼠標中鍵
9 # <ButtonRelease-3> 釋放鼠標右鍵
10
11
12 label = tkinter.Label(win, text="*********", bg="red") 13 label.pack() 14
15 def func(event): 16 print(event.x, event.y) 17
18 label.bind("<ButtonRelease-1>", func) 19
20 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 # <Enter> 當鼠標進入控件時觸發事件
8 # <Leave> 當鼠標離開控件時觸發事件
9
10 label = tkinter.Label(win, text="*********", bg="red") 11 label.pack() 12
13 def func(event): 14 print(event.x, event.y) 15
16 label.bind("<Enter>", func) 17 label.bind("<Leave>", func) 18
19
20 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 # <Key> 響應全部的按鍵(要有焦點)
8
9 label = tkinter.Label(win, text="*********", bg="red") 10 # 設置焦點
11 label.focus_set() 12 label.pack() 13
14 def func(event): 15 print("event.char=", event.char) 16 print("event.keycode=", event.keycode) 17
18 label.bind("<Key>", func) 19
20 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7 # <Shift_L> 只響應左側的shift鍵
8 # <Shift_R>
9 # <F5>
10 # <Return> 也就是回車鍵
11 # <BackSpace> 返回,也就是退格鍵
12
13 label = tkinter.Label(win, text="*********", bg="red") 14 # 設置焦點
15 label.focus_set() 16 label.pack() 17
18 def func(event): 19 print("event.char=", event.char) 20 print("event.keycode=", event.keycode) 21
22
23 label.bind("<Shift_L>", func) 24
25
26 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7
8 label = tkinter.Label(win, text="*********", bg="red") 9 # 設置焦點
10 label.focus_set() 11 label.pack() 12
13 def func(event): 14 print("event.char=", event.char) 15 print("event.keycode=", event.keycode) 16
17
18 win.bind("a", func) # 注意前面改爲了win,只須要寫出按鍵名便可
19
20
21 win.mainloop()
1 import tkinter 2
3 win = tkinter.Tk() 4 win.title("yudanqu") 5 win.geometry("400x400+200+50") 6
7
8 # <Control-Alt-a>
9 # <Shift-Up>
10 # 只是control+alt不行
11
12 label = tkinter.Label(win, text="*********", bg="red") 13 # 設置焦點
14 label.focus_set() 15 label.pack() 16
17 def func(event): 18 print("event.char=", event.char) 19 print("event.keycode=", event.keycode) 20
21
22 win.bind("<Control-Alt-a>", func) # 注意前面改爲了win,只須要寫出按鍵名便可
23
24
25 win.mainloop()