給大家分享一篇 tkinter python(圖形開發(fā)界面)

Tkinter模塊("Tk 接口")是Python的標(biāo)準(zhǔn)Tk GUI工具包的接口.Tk和Tkinter可以在大多數(shù)的Unix平臺下使用,同樣可以應(yīng)用在Windows和Macintosh系統(tǒng)里.Tk8.0的后續(xù)版本可以實現(xiàn)本地窗口風(fēng)格,并良好地運行在絕大多數(shù)平臺中乎赴。

目錄:

1忍法、簡單實例
2无虚、Label控件
3缔赠、Button控件
4、Entry控件
5友题、點擊按鈕輸出輸入框中的內(nèi)容
6嗤堰、Text控件
7、帶滾動條的Text
8度宦、Checkbutton多選框控件
9踢匣、Radiobutton單選框
10、Listbox控件一
11戈抄、Listbox控件二
12离唬、Listbox控件三
13、Listbox四
14划鸽、Scale控件
15输莺、Spinbox控件
16、Menu頂層菜單
17裸诽、Menu鼠標(biāo)右鍵菜單
18嫂用、Combobox下拉控件
19、Frame控件
20丈冬、表格數(shù)據(jù)
21嘱函、樹狀數(shù)據(jù)
22、絕對布局
23埂蕊、相對布局
24往弓、表格布局
25疏唾、鼠標(biāo)點擊事件
26、鼠標(biāo)移動事件
27函似、鼠標(biāo)釋放事件
28槐脏、進入和離開事件
29、響應(yīng)所有按鍵的事件
30缴淋、響應(yīng)特殊按鍵事件
31准给、指定按鍵事件
32、組合按鍵事件

1重抖、簡單實例

下面的代碼是創(chuàng)建出一個窗口,其他的操作就在這個平臺上進行祖灰。執(zhí)行之后會在桌面彈出一個窗口钟沛,窗口的標(biāo)題就是代碼中設(shè)置的win.title。這里說一下局扶,我使用的版本是python3.6恨统。后面的內(nèi)容盡量按順序看,后面的控件也許用到前面寫到的東西三妈。

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import tkinter
 5 
 6 
 7 # 創(chuàng)建主窗口
 8 win = tkinter.Tk()
 9 # 設(shè)置標(biāo)題
10 win.title("yudanqu")
11 # 設(shè)置大小和位置
12 win.geometry("400x400+200+50")
13 
14 # 進入消息循環(huán)畜埋,可以寫控件
15 
16 win.mainloop()

2、Label控件

 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:標(biāo)簽控件,可以顯示文本
12 '''
13 # win:父窗體
14 # text:顯示的文本內(nèi)容
15 # bg:背景色
16 # fg:字體顏色
17 # font:字體
18 # wraplength:指定text文本中多寬之后換行
19 # justify:設(shè)置換行后的對齊方式
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()

3、Button控件

 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 # 創(chuàng)建按鈕
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()

4蔫骂、Entry控件

 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:輸入控件么翰,用于顯示簡單的文本內(nèi)容
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 # 設(shè)置值
26 e.set("wewewewewewe")
27 # 取值
28 print(e.get())
29 print(entry2.get())
30 
31 win.mainloop()

5、點擊按鈕輸出輸入框中的內(nèi)容

 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     # 獲取輸入的內(nèi)容
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()

6辽旋、Text控件

 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表示的是顯示的行數(shù)
14 text = tkinter.Text(win, width=30, height=10)
15 text.pack()
16 
17 str = '''蓋聞天地之?dāng)?shù)浩嫌,有十二萬九千六百歲為一元。將一元分為十二會补胚,乃子码耐、丑、寅糖儡、卯伐坏、辰、巳握联、午桦沉、未每瞒、申、酉纯露、戌剿骨、亥之十二支也。每會該一萬八百歲埠褪。且就一日而論:子時得陽氣浓利,而丑則雞鳴;寅不通光钞速,而卯則日出贷掖;辰時食后,而巳則挨排渴语;日午天中苹威,而未則西蹉;申時晡而日落酉驾凶;戌黃昏而人定亥牙甫。譬于大數(shù),若到戌會之終调违,則天地昏蒙而萬物否矣窟哺。再去五千四百歲,交亥會之初技肩,則當(dāng)黑暗且轨,而兩間人物俱無矣,故曰混沌亩鬼。又五千四百歲殖告,亥會將終,貞下起元雳锋,近子之會黄绩,而復(fù)逐漸開明。邵康節(jié)曰:“冬至子之半玷过,天心無改移爽丹。一陽初動處,萬物未生時辛蚊≡列”到此,天始有根袋马。再五千四百歲初澎,正當(dāng)子會,輕清上騰,有日碑宴,有月软啼,有星,有辰延柠。日祸挪、月、星贞间、辰贿条,謂之四象。故曰增热,天開于子整以。又經(jīng)五千四百歲,子會將終钓葫,近丑之會悄蕾,而逐漸堅實。易曰:“大哉乾元础浮!至哉坤元!萬物資生奠骄,乃順承天豆同。”至此含鳞,地始凝結(jié)影锈。再五千四百歲,正當(dāng)丑會蝉绷,重濁下凝鸭廷,有水,有火熔吗,有山辆床,有石,有土桅狠。水讼载、火、山中跌、石咨堤、土謂之五形。故曰漩符,地辟于丑一喘。又經(jīng)五千四百歲,丑會終而寅會之初嗜暴,發(fā)生萬物凸克。'''
18 
19 text.insert(tkinter.INSERT, str)
20 
21 win.mainloop()

7议蟆、帶滾動條的Text

 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 # 創(chuàng)建滾動條
16 scroll = tkinter.Scrollbar()
17 
18 text = tkinter.Text(win, width=30, height=10)
19 # side放到窗體的哪一側(cè),  fill填充
20 scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
21 text.pack(side=tkinter.LEFT, fill=tkinter.Y)
22 # 關(guān)聯(lián)
23 scroll.config(command=text.yview)
24 text.config(yscrollcommand=scroll.set)
25 
26 text.pack()
27 
28 str = '''蓋聞天地之?dāng)?shù),有十二萬九千六百歲為一元触徐。將一元分為十二會咪鲜,乃子、丑撞鹉、寅疟丙、卯、辰鸟雏、巳享郊、午、未孝鹊、申炊琉、酉、戌又活、亥之十二支也苔咪。每會該一萬八百歲。且就一日而論:子時得陽氣柳骄,而丑則雞鳴团赏;寅不通光,而卯則日出耐薯;辰時食后舔清,而巳則挨排;日午天中曲初,而未則西蹉体谒;申時晡而日落酉;戌黃昏而人定亥臼婆。譬于大數(shù)抒痒,若到戌會之終,則天地昏蒙而萬物否矣目锭。再去五千四百歲评汰,交亥會之初,則當(dāng)黑暗痢虹,而兩間人物俱無矣被去,故曰混沌。又五千四百歲奖唯,亥會將終惨缆,貞下起元,近子之會,而復(fù)逐漸開明坯墨。邵康節(jié)曰:“冬至子之半寂汇,天心無改移。一陽初動處捣染,萬物未生時骄瓣。”到此耍攘,天始有根榕栏。再五千四百歲,正當(dāng)子會蕾各,輕清上騰扒磁,有日,有月式曲,有星妨托,有辰。日吝羞、月兰伤、星、辰钧排,謂之四象医清。故曰,天開于子卖氨。又經(jīng)五千四百歲,子會將終负懦,近丑之會筒捺,而逐漸堅實。易曰:“大哉乾元纸厉!至哉坤元系吭!萬物資生,乃順承天颗品】铣撸”至此,地始凝結(jié)躯枢。再五千四百歲则吟,正當(dāng)丑會,重濁下凝锄蹂,有水氓仲,有火,有山,有石敬扛,有土晰洒。水、火啥箭、山谍珊、石、土謂之五形急侥。故曰砌滞,地辟于丑。又經(jīng)五千四百歲缆巧,丑會終而寅會之初布持,發(fā)生萬物。'''
29 
30 text.insert(tkinter.INSERT, str)
31 
32 win.mainloop()

8陕悬、Checkbutton多選框控件

 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中所有內(nèi)容
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()

9题暖、Radiobutton單選框

 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 # 綁定變量,一組單選框要綁定同一個變量捉超,就能區(qū)分出單選框了
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()

10胧卤、Listbox控件一

 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 # 創(chuàng)建一個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 # 將列表當(dāng)做一個元素添加
26 # lb.insert(tkinter.END, ["very good", "very nice"])
27 
28 # 刪除:參數(shù)1為開始的索引拼岳,參數(shù)2為結(jié)束的索引枝誊,如果不指定參數(shù)2,只刪除第一個索引處的內(nèi)容
29 lb.delete(1,3)
30 
31 # 選中:參數(shù)1為開始的索引惜纸,參數(shù)2為結(jié)束的索引叶撒,如果不指定參數(shù)2,只選中第一個索引處的內(nèi)容
32 lb.select_set(2,3)
33 
34 # 取消選中:參數(shù)1為開始的索引耐版,參數(shù)2為結(jié)束的索引祠够,如果不指定參數(shù)2,只取消第一個索引處的內(nèi)容
35 lb.select_clear(2)
36 
37 # 獲取到列表中的元素個數(shù)
38 print(lb.size())
39 # 獲取值
40 print(lb.get(2,3))
41 
42 # 返回當(dāng)前的索引項粪牲,不是item元素
43 print(lb.curselection())
44 
45 # 判斷:一個選項是否被選中
46 print(lb.selection_includes(3))
47 
48 win.mainloop()

11古瓤、Listbox控件二

 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相似,但是不支持鼠標(biāo)按下后移動選中位置
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 # 打印當(dāng)前列表中的選型
19 print(lbv.get())
20 
21 # 設(shè)置選項
22 # lbv.set(("1","2","3"))
23 
24 # 綁定事件
25 def myprint(event):
26     # print(lb.curselection()) # 返回下標(biāo)
27     print(lb.get(lb.curselection())) # 返回值
28 lb.bind("<Double-Button-1>", myprint)
29 
30 win.mainloop()

12腺阳、Listbox控件三

 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()

13落君、Listbox四

 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()

14、Scale控件

 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 :選擇值將會為該值得倍數(shù)
15 
16 scale1 = tkinter.Scale(win, from_=0, to=100, orient=tkinter.HORIZONTAL, tickinterval=10, length=200)
17 scale1.pack()
18 
19 # 設(shè)置值
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()

15痛侍、Spinbox控件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 '''
 8 數(shù)值范圍控件
 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 只要值改變就會執(zhí)行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()

16、Menu頂層菜單

 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 # 創(chuàng)建一個菜單選項
15 menu1 = tkinter.Menu(menubar, tearoff=False)
16 
17 # 給菜單選項添加內(nèi)容
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()

17赵哲、Menu鼠標(biāo)右鍵菜單

 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 # 給菜單選項添加內(nèi)容
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()

18待德、Combobox下拉控件

 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 # 設(shè)置下拉數(shù)據(jù)
15 com["value"] = ("黑龍江", "吉林", "遼寧")
16 
17 # 設(shè)置默認值
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()

19、Frame控件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 '''
 8 框架控件:在桌面上顯示一個矩形區(qū)域枫夺,多作為一個容器控件
 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()

20将宪、表格數(shù)據(jù)

 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 # 設(shè)置列,列還不顯示
15 tree.column("姓名", width=100)
16 tree.column("年齡", width=100)
17 tree.column("身高", width=100)
18 tree.column("體重", width=100)
19 
20 # 設(shè)置表頭
21 tree.heading("姓名", text="姓名-name")
22 tree.heading("年齡", text="年齡-age")
23 tree.heading("身高", text="身高-height")
24 tree.heading("體重", text="體重-weight")
25 
26 # 添加數(shù)據(jù)
27 tree.insert("", 0, text="line1", values=("小鄭","34","177cm","70kg"))
28 tree.insert("", 1, text="line2", values=("小張","43","188cm","90kg"))
29 
30 win.mainloop()

21橡庞、樹狀數(shù)據(jù)

 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()

22较坛、絕對布局

 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()

23扒最、相對布局

 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()

24、表格布局

 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()

25吧趣、鼠標(biāo)點擊事件

 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>  鼠標(biāo)左鍵
12 # <Button-2>  鼠標(biāo)滾輪
13 # <Button-1>  鼠標(biāo)右鍵
14 # <Double-Button-1>  鼠標(biāo)雙擊左鍵
15 # <Triple-Button-1>  鼠標(biāo)三擊左鍵
16 
17 button1 = tkinter.Button(win, text="leftmouse button")
18 # bind 給控件綁定數(shù)據(jù)(參數(shù)一是綁定的事件法竞,參數(shù)二是觸發(fā)事件的函數(shù))
19 button1.bind("<Button-1>", func)
20 button1.pack()
21 
22 win.mainloop()

26、鼠標(biāo)移動事件

 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()

27强挫、鼠標(biāo)釋放事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # <ButtonRelease-1> 釋放鼠標(biāo)左鍵
 8 # <ButtonRelease-2> 釋放鼠標(biāo)中鍵
 9 # <ButtonRelease-3> 釋放鼠標(biāo)右鍵
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()

28岔霸、進入和離開事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # <Enter>  當(dāng)鼠標(biāo)進入控件時觸發(fā)事件
 8 # <Leave>  當(dāng)鼠標(biāo)離開控件時觸發(fā)事件
 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()

29、響應(yīng)所有按鍵的事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # <Key>  響應(yīng)所有的按鍵(要有焦點)
 8 
 9 label = tkinter.Label(win, text="*********", bg="red")
10 # 設(shè)置焦點
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()

30俯渤、響應(yīng)特殊按鍵事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # <Shift_L>  只響應(yīng)左側(cè)的shift鍵
 8 # <Shift_R>
 9 # <F5>
10 # <Return>  也就是回車鍵
11 # <BackSpace>  返回,也就是退格鍵
12 
13 label = tkinter.Label(win, text="*********", bg="red")
14 # 設(shè)置焦點
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()

31呆细、指定按鍵事件

 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 # 設(shè)置焦點
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()

32八匠、組合按鍵事件

 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 # 設(shè)置焦點
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()

作者:漁單渠
出處:https://www.cnblogs.com/yudanqu/

進群:834179111 免費領(lǐng)取Python的學(xué)習(xí)資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市梨树,隨后出現(xiàn)的幾起案子略水,更是在濱河造成了極大的恐慌,老刑警劉巖劝萤,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異慎璧,居然都是意外死亡床嫌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門胸私,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厌处,“玉大人,你說我怎么就攤上這事岁疼±妫” “怎么了缆娃?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瑰排。 經(jīng)常有香客問我贯要,道長,這世上最難降的妖魔是什么椭住? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任崇渗,我火速辦了婚禮,結(jié)果婚禮上京郑,老公的妹妹穿的比我還像新娘宅广。我一直安慰自己,他們只是感情好些举,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布跟狱。 她就那樣靜靜地躺著,像睡著了一般户魏。 火紅的嫁衣襯著肌膚如雪驶臊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天绪抛,我揣著相機與錄音资铡,去河邊找鬼。 笑死幢码,一個胖子當(dāng)著我的面吹牛笤休,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播症副,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼店雅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贞铣?” 一聲冷哼從身側(cè)響起闹啦,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辕坝,沒想到半個月后窍奋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡酱畅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年琳袄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纺酸。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡窖逗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出餐蔬,到底是詐尸還是另有隱情碎紊,我是刑警寧澤佑附,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站仗考,受9級特大地震影響音同,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痴鳄,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一瘟斜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧痪寻,春花似錦螺句、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至顾画,卻和暖如春取劫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背研侣。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工谱邪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庶诡。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓惦银,卻偏偏與公主長得像,于是被迫代替她去往敵國和親末誓。 傳聞我的和親對象是個殘疾皇子扯俱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1、圖形化界面設(shè)計的基本理解當(dāng)前流行的計算機桌面應(yīng)用程序大多數(shù)為圖形化用戶界面(Graphic User Inte...
    IIronMan閱讀 257,206評論 15 243
  • 1喇澡、窗體 1迅栅、常用屬性 (1)Name屬性:用來獲取或設(shè)置窗體的名稱,在應(yīng)用程序中可通過Name屬性來引用窗體晴玖。 ...
    Moment__格調(diào)閱讀 4,548評論 0 11
  • Windows 常用消息大全 表A-1 Windows消息分布 消息范圍說 明 0 ~ WM_USER – 1系統(tǒng)...
    北風(fēng)知我意閱讀 2,049評論 0 0
  • 藍色就是我的生命读存,尊貴、典雅呕屎、孤獨 藍色亦是我表達愛的方式宪萄,深沉、含蓄 藍色像是一簾幽夢榨惰,幾許夢回,幾許醒 藍色滋...
    南妡淺月閱讀 748評論 0 1
  • 雪落無緒居凶,梨花弄雨,美麗的相遇藤抡,春風(fēng)依依侠碧。淡淡的年華似水,流逝的思念缠黍,沒有誰不想走出愛的荊棘弄兜。 一段感情的濃濃蜜意...
    彼岸花的根閱讀 191評論 1 1