【python第十周】tkinter實例|簡單實例


1、簡單實例

  下面的代碼是創建出一個窗口,其他的操作就在這個平台上進行。執行之后會在桌面彈出一個窗口,窗口的標題就是代碼中設置的win.title。這里說一下,我使用的版本是python3.6。后面的內容盡量按順序看,后面的控件也許用到前面寫到的東西。

 

 

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

 

 

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:標簽控件,可以顯示文本

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

 

 

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 # 創建按鈕

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:輸入控件,用於顯示簡單的文本內容

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

 

 

5、點擊按鈕輸出輸入框中的內容

 

 

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

 

 

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表示的是顯示的行數

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

 

 

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 # 創建滾動條

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

 

 

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中所有內容

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

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 # 創建一個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()

 

 

 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相似,但是不支持鼠標按下后移動選中位置

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

 

 

12、Listbox控件三

 

 

 1 import tkinter

 2

 3 win = tkinter.Tk()

 4 win.title("yudanqu")

 5 # win.geometry("400x400+200+50")

 6

 7 # EXTENDED:可以使listbox支持shiftCtrl

 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 :選擇值將會為該值得倍數

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

 

 

15、Spinbox控件

 

 

 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要輸入一個元組 最好不要和fromto同時使用,而且步長也沒用

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

 

 

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 # 創建一個菜單選項

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

 

 

17、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

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

 

 

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 # 設置下拉數據

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

 

 

19、Frame控件

 

 

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

 

 

20、表格數據

 

 

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

 

 

21、樹狀數據

 

 

 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、鼠標點擊事件

 

 

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

 

 

26、鼠標移動事件

 

 

 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、鼠標釋放事件

 

 

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

 

 

28、進入和離開事件

 

 

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

 

 

29、響應所有按鍵的事件

 

 

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

 

 

30、響應特殊按鍵事件

 

 

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

 

 

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 # 設置焦點

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 # 設置焦點

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM