当前位置:首页 > Python教程 > python技巧

python--tkinter(图形开发界面)

  Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

技术分享图片

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")
1314# 进入消息循环,可以写控件1516 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")
 910‘‘‘11Label:标签控件,可以显示文本
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")
3031# 显示出来32label.pack()
333435 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")
 91011 win = tkinter.Tk()
12 win.title("yudanqu")
13 win.geometry("400x400+200+50")
141516# 创建按钮17 button1 = tkinter.Button(win, text="按钮", command=func, width=10, height=10)
18button1.pack()
1920 button2 = tkinter.Button(win, text="按钮", command=lambda: print("bbbbbbbbbbbb"))
21button2.pack()
2223 button3 = tkinter.Button(win, text="退出", command=win.quit)
24button3.pack()
2526 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")
 910‘‘‘11Entry:输入控件,用于显示简单的文本内容
12‘‘‘1314# 密文显示15 entry1 = tkinter.Entry(win, show="*") # show="*" 可以表示输入密码16entry1.pack()
1718# 绑定变量19 e = tkinter.Variable()
2021 entry2 = tkinter.Entry(win, textvariable=e)
22entry2.pack()
2324# e就代表输入框这个对象25# 设置值26 e.set("wewewewewewe")
27# 取值28print(e.get())
29print(entry2.get())
3031 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 9def showinfo():
10# 获取输入的内容11print(entry.get())
1213 entry = tkinter.Entry(win)
14entry.pack()
1516 button = tkinter.Button(win, text="按钮", command=showinfo)
17button.pack()
1819 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‘‘‘1213# height表示的是显示的行数14 text = tkinter.Text(win, width=30, height=10)
15text.pack()
1617 str = ‘‘‘盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。譬于大数,若到戌会之终,则天地昏蒙而万物否矣。再去五千四百岁,交亥会之初,则当黑暗,而两间人物俱无矣,故曰混沌。又五千四百岁,亥会将终,贞下起元,近子之会,而复逐渐开明。邵康节曰:“冬至子之半,天心无改移。一阳初动处,万物未生时。”到此,天始有根。再五千四百岁,正当子会,轻清上腾,有日,有月,有星,有辰。日、月、星、辰,谓之四象。故曰,天开于子。又经五千四百岁,子会将终,近丑之会,而逐渐坚实。易曰:“大哉乾元!至哉坤元!万物资生,乃顺承天。”至此,地始凝结。再五千四百岁,正当丑会,重浊下凝,有水,有火,有山,有石,有土。水、火、山、石、土谓之五形。故曰,地辟于丑。又经五千四百岁,丑会终而寅会之初,发生万物。‘‘‘1819text.insert(tkinter.INSERT, str)
2021 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")1011‘‘‘12文本控件:用于显示多行文本
13‘‘‘1415# 创建滚动条16 scroll = tkinter.Scrollbar()
1718 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)
2526text.pack()
2728 str = ‘‘‘盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。譬于大数,若到戌会之终,则天地昏蒙而万物否矣。再去五千四百岁,交亥会之初,则当黑暗,而两间人物俱无矣,故曰混沌。又五千四百岁,亥会将终,贞下起元,近子之会,而复逐渐开明。邵康节曰:“冬至子之半,天心无改移。一阳初动处,万物未生时。”到此,天始有根。再五千四百岁,正当子会,轻清上腾,有日,有月,有星,有辰。日、月、星、辰,谓之四象。故曰,天开于子。又经五千四百岁,子会将终,近丑之会,而逐渐坚实。易曰:“大哉乾元!至哉坤元!万物资生,乃顺承天。”至此,地始凝结。再五千四百岁,正当丑会,重浊下凝,有水,有火,有山,有石,有土。水、火、山、石、土谓之五形。故曰,地辟于丑。又经五千四百岁,丑会终而寅会之初,发生万物。‘‘‘2930text.insert(tkinter.INSERT, str)
3132 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 9def updata():
10     message = ""11if hobby1.get() ==True:
12         message += "moneyn"13if hobby2.get() == True:
14         message += "powern"15if hobby3.get() == True:
16         message += "peoplen"1718# 清空text中所有内容19     text.delete(0.0, tkinter.END)
20    text.insert(tkinter.INSERT, message)
2122# 要绑定的变量23 hobby1 = tkinter.BooleanVar()
24# 多选框25 check1 = tkinter.Checkbutton(win, text="money", variable=hobby1, command=updata)
26check1.pack()
27 hobby2 = tkinter.BooleanVar()
28 check2 = tkinter.Checkbutton(win, text="power", variable=hobby2, command=updata)
29check2.pack()
30 hobby3 = tkinter.BooleanVar()
31 check3 = tkinter.Checkbutton(win, text="people", variable=hobby3, command=updata)
32check3.pack()
3334 text = tkinter.Text(win, width=50, height=5)
35text.pack()
3637 win.mainloop()
        

9、Radiobutton单选框

            
                 1
                import
                 tkinter

                 2
                 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 7def updata():
 8print(r.get())
 910# 绑定变量,一组单选框要绑定同一个变量,就能区分出单选框了11 r = tkinter.IntVar()
1213 radio1 = tkinter.Radiobutton(win, text="one", value=1, variable=r, command=updata)
14radio1.pack()
15 radio2 = tkinter.Radiobutton(win, text="two", value=2, variable=r, command=updata)
16radio2.pack()
1718 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‘‘‘1314# 创建一个listbox,添加几个元素15 lb = tkinter.Listbox(win, selectmode=tkinter.BROWSE)
16lb.pack()
1718for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
19# 按顺序添加20    lb.insert(tkinter.END, item)
2122# 在开始添加23 lb.insert(tkinter.ACTIVE, "cool")
2425# 将列表当做一个元素添加26# lb.insert(tkinter.END, ["very good", "very nice"])2728# 删除:参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只删除第一个索引处的内容29 lb.delete(1,3)
3031# 选中:参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只选中第一个索引处的内容32 lb.select_set(2,3)
3334# 取消选中:参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只取消第一个索引处的内容35 lb.select_clear(2)
3637# 获取到列表中的元素个数38print(lb.size())
39# 获取值40print(lb.get(2,3))
4142# 返回当前的索引项,不是item元素43print(lb.curselection())
4445# 判断:一个选项是否被选中46print(lb.selection_includes(3))
4748 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()
 910# 与BORWSE相似,但是不支持鼠标按下后移动选中位置11 lb = tkinter.Listbox(win, selectmode=tkinter.SINGLE, listvariable=lbv)
12lb.pack()
1314for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
15# 按顺序添加16    lb.insert(tkinter.END, item)
1718# 打印当前列表中的选型19print(lbv.get())
2021# 设置选项22# lbv.set(("1","2","3"))2324# 绑定事件25def myprint(event):
26# print(lb.curselection()) # 返回下标27print(lb.get(lb.curselection())) # 返回值28 lb.bind("<Double-Button-1>", myprint)
2930 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)
 9lb.pack()
1011for 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)
1415# 滚动条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
2324 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)
 9lb.pack()
1011for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
12# 按顺序添加13    lb.insert(tkinter.END, item)
1415 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‘‘‘1011# tkinter.HORIZONTAL水平12# tkinter.VERTICAL 竖直(默认)13# length:水平时表示宽度,竖直时表示高度14# tickintervar :选择值将会为该值得倍数1516 scale1 = tkinter.Scale(win, from_=0, to=100, orient=tkinter.HORIZONTAL, tickinterval=10, length=200)
17scale1.pack()
1819# 设置值20 scale1.set(20)
2122# 取值23# print(scale1.get())2425def showNum():
26print(scale1.get())
27 tkinter.Button(win, text="按钮", command=showNum).pack()
2829 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‘‘‘1011# 绑定变量12 v = tkinter.StringVar()
1314def updata():
15print(v.get())
1617# increment:步长,默认为118# 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))23sp.pack()
2425# 赋值26 v.set(20)
27# 取值28print(v.get())
2930 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)
1011def func():
12print("**********")
1314# 创建一个菜单选项15 menu1 = tkinter.Menu(menubar, tearoff=False)
1617# 给菜单选项添加内容18for item in [python,c,java,c++, c#,php,B,退出]:
19if item == 退出:
20# 添加分割线21        menu1.add_separator()
22         menu1.add_command(label=item, command=win.quit)
23else:
24         menu1.add_command(label=item, command=func)
2526# 向菜单条上添加菜单选项27 menubar.add_cascade(label=语言, menu=menu1)
2829 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)
 910def func():
11print("**********")
1213# 菜单14 menu = tkinter.Menu(menubar, tearoff=False)
15# 给菜单选项添加内容16for item in [python,c,java,c++, c#,php,B,退出]:
17if item == 退出:
18# 添加分割线19        menu.add_separator()
20         menu.add_command(label=item, command=win.quit)
21else:
22         menu.add_command(label=item, command=func)
2324 menubar.add_cascade(label="语言", menu=menu)
2526def showMenu(event):
27    menubar.post(event.x_root, event.y_root)
2829 win.bind("<Button-3>", showMenu)
3031 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()
1011 com = ttk.Combobox(win, textvariable=cv)
12com.pack()
1314# 设置下拉数据15 com["value"] = ("黑龙江", "吉林", "辽宁")
1617# 设置默认值18com.current(0)
1920# 绑定事件2122def func(event):
23print(com.get())
24print(cv.get())
25 com.bind("<<ComboboxSelected>>", func)
2627 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‘‘‘1011 frm = tkinter.Frame(win)
12frm.pack()
1314# left15 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)
1920# right21 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)
2526 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)
10tree.pack()
1112# 定义列13 tree["columns"] = ("姓名","年龄","身高","体重")
14# 设置列,列还不显示15 tree.column("姓名", width=100)
16 tree.column("年龄", width=100)
17 tree.column("身高", width=100)
18 tree.column("体重", width=100)
1920# 设置表头21 tree.heading("姓名", text="姓名-name")
22 tree.heading("年龄", text="年龄-age")
23 tree.heading("身高", text="身高-height")
24 tree.heading("体重", text="体重-weight")
2526# 添加数据27 tree.insert("", 0, text="line1", values=("小郑","34","177cm","70kg"))
28 tree.insert("", 1, text="line2", values=("小张","43","188cm","90kg"))
2930 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)
 9tree.pack()
1011# 添加一级树枝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"))
1516# 二级树枝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"))
2021 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"))
2425# 三级树枝26 treeF1_1_1 = tree.insert(treeF1_1,0,"哈尔滨",text="黑龙江哈尔滨")
27 treeF1_1_2 = tree.insert(treeF1_1,1,"五常",text="黑龙江五常")
2829 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")
1011# 绝对布局,窗口的变化对位置没有影响12 label1.place(x=10,y=10)
13 label2.place(x=50,y=50)
14 label3.place(x=100,y=100)
1516 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")
1011# 相对布局,窗体改变对控件有影响12 label1.pack(fill=tkinter.Y, side=tkinter.LEFT)
13 label2.pack(fill=tkinter.X, side=tkinter.TOP)
14label3.pack()
1516 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")
1112# 表格布局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)
1718 win.mainloop()
        

25、鼠标点击事件

            
                 1
                import
                 tkinter

                 2
                 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 7 8def func(event):
 9print(event.x, event.y)
1011# <Button-1>  鼠标左键12# <Button-2>  鼠标滚轮13# <Button-1>  鼠标右键14# <Double-Button-1>  鼠标双击左键15# <Triple-Button-1>  鼠标三击左键1617 button1 = tkinter.Button(win, text="leftmouse button")
18# bind 给控件绑定数据(参数一是绑定的事件,参数二是触发事件的函数)19 button1.bind("<Button-1>", func)
20button1.pack()
2122 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>  右键移动111213 label = tkinter.Label(win, text="*********")
14label.pack()
1516def func(event):
17print(event.x, event.y)
1819 label.bind("<B1-Motion>", func)
2021 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> 释放鼠标右键101112 label = tkinter.Label(win, text="*********", bg="red")
13label.pack()
1415def func(event):
16print(event.x, event.y)
1718 label.bind("<ButtonRelease-1>", func)
1920 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>  当鼠标离开控件时触发事件 910 label = tkinter.Label(win, text="*********", bg="red")
11label.pack()
1213def func(event):
14print(event.x, event.y)
1516 label.bind("<Enter>", func)
17 label.bind("<Leave>", func)
181920 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# 设置焦点11label.focus_set()
12label.pack()
1314def func(event):
15print("event.char=", event.char)
16print("event.keycode=", event.keycode)
1718 label.bind("<Key>", func)
1920 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>  返回,也就是退格键1213 label = tkinter.Label(win, text="*********", bg="red")
14# 设置焦点15label.focus_set()
16label.pack()
1718def func(event):
19print("event.char=", event.char)
20print("event.keycode=", event.keycode)
212223 label.bind("<Shift_L>", func)
242526 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# 设置焦点10label.focus_set()
11label.pack()
1213def func(event):
14print("event.char=", event.char)
15print("event.keycode=", event.keycode)
161718 win.bind("a", func) # 注意前面改成了win,只需要写出按键名即可192021 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不行1112 label = tkinter.Label(win, text="*********", bg="red")
13# 设置焦点14label.focus_set()
15label.pack()
1617def func(event):
18print("event.char=", event.char)
19print("event.keycode=", event.keycode)
202122 win.bind("<Control-Alt-a>", func) # 注意前面改成了win,只需要写出按键名即可232425 win.mainloop()
        

 

原文:https://www.cnblogs.com/yudanqu/p/9467803.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐