转载URL:https://www.cnblogs.com/yudanqu/p/9467803.html

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
目录:1、简单实例
2、Label控件
3、Button控件
4、Entry控件
5、点击按钮输出输入框中的内容
6、Text控件
7、带滚动条的Text
8、Checkbutton多选框控件
9、Radiobutton单选框
10、Listbox控件一
11、Listbox控件二
12、Listbox控件三
13、Listbox四
14、Scale控件
15、Spinbox控件
16、Menu顶层菜单
17、Menu鼠标右键菜单
18、Combobox下拉控件
19、Frame控件
20、表格数据
21、树状数据
22、绝对布局
23、相对布局
24、表格布局
25、鼠标点击事件
26、鼠标移动事件
27、鼠标释放事件
28、进入和离开事件
29、响应所有按键的事件
30、响应特殊按键事件
31、指定按键事件
32、组合按键事件

1、简单实例

  下面的代码是创建出一个窗口,其他的操作就在这个平台上进行。执行之后会在桌面弹出一个窗口,窗口的标题就是代码中设置的win.title。这里说一下,我使用的版本是python3.6。后面的内容尽量按顺序看,后面的控件也许用到前面写到的东西。

 1 #!/usr/bin/env python2 # -*- coding:utf-8 -*-3 4 import tkinter5 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 python2 # -*- coding:utf-8 -*-3 4 import tkinter5 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 python2 # -*- coding:utf-8 -*-3 4 import tkinter5 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 python2 # -*- coding:utf-8 -*-3 4 import tkinter5 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 python2 # -*- coding:utf-8 -*-3 import tkinter4 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 python2 # -*- coding:utf-8 -*-3 import tkinter4 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 python2 # -*- coding:utf-8 -*-3 4 5 import tkinter6 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 python2 # -*- coding:utf-8 -*-3 import tkinter4 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 tkinter2 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 python2 # -*- coding:utf-8 -*-3 import tkinter4 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 tkinter2 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 tkinter2 3 win = tkinter.Tk()4 win.title("yudanqu")5 # win.geometry("400x400+200+50")6 7 # EXTENDED:可以使listbox支持shift和Ctrl8 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 tkinter2 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 tkinter2 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 tkinter2 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()

16、Menu顶层菜单

 1 import tkinter2 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 tkinter2 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 tkinter2 from tkinter import ttk3 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 tkinter2 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 tkinter2 from tkinter import ttk3 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 tkinter2 from tkinter import ttk3 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 tkinter2 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 tkinter2 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 tkinter2 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 tkinter2 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 tkinter2 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 tkinter2 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 tkinter2 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 tkinter2 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 tkinter2 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 tkinter2 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 tkinter2 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()

转载于:https://www.cnblogs.com/xiehy/p/10826495.html

python-tkinter使用方法——转载(二)相关推荐

  1. Python tkinter canvas方法的Bitmap、stipple参数和组件Bitmap属性的使用以及xbm文件

    xbm文件使用纯文本描述单色位图图像,是一种被广泛使用的通用文件格式,扩展名为xbm.在图形界面(GUI)中,小的单色简单图形.图标和鼠标位图可采用xbm文件.在python中,Canvas多个方法的 ...

  2. abaqus python_Abaqus运行Python脚本的方法—转载

    1 概述 Abaqus 软件二次开发环境提供的脚本结构就是基于Python语言进行的定制开发.在Abaqus/CAE中进行的所有操作,都有对应的命令,这些命令是用Python语言编写的.如果接触过AN ...

  3. Python基础——魔法方法(二)

    文章目录 描述符(Property的原理) 定制序列 迭代器 描述符(Property的原理) 所谓描述符(descriptor) 就是将某种特殊类型的类的实例指派给另一个类的属性. 那什么是特殊类型 ...

  4. python tkinter 安装_[转载]python---Tkinter安装

    用了一上午的时间,觉得linux下的python不直接保护Tkinter模块实在是费事. 我也是上网查了好多资料,但是说的比较含糊,下面就说明一下怎样安装,以使得有的童鞋可以省时省力. 首先,查看Tk ...

  5. python字符串find方法(二分钟读懂)

    python字符串find的应用 查找到字符串的位置,给出所在字符串的下标位置 如下给出的只是下标第6个 a = "伤感+上单=乱杀" # 01 23 4 567 print(a. ...

  6. Python Tkinter详解 (二)Label标签的使用

    #一个简单到不能再简单的标签import tkinter as tkwindow = tk.Tk() window.title('Label的使用') window.geometry('400x400 ...

  7. python中stringvar的用法_Python tkinter.StringVar方法代码示例

    本文整理汇总了Python中tkinter.StringVar方法的典型用法代码示例.如果您正苦于以下问题:Python tkinter.StringVar方法的具体用法?Python tkinter ...

  8. Python Tkinter教程(二)——Label控件、Frame控件、Button控件的完整参数和所有方法及详细用法

    >>>[上节回顾:tkinter编程基本步骤.窗口基本属性及Toplevel控件的使用]<<< Python Tkinter教程(二)         这篇博客将详 ...

  9. python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...

    使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...

  10. python使用方法-python-tkinter使用方法——转载(一)

    [因为这是我第一个接触的GUI图形界面python库,现在也不用了,所以大多数内容都来自之前花 钱买的一些快速入门的内容,可以当作简单的知识点查询使用] 在此声明:内容来自微信公众号GitChat,付 ...

最新文章

  1. 全网最简单的dubbo源码调试,建议点赞收藏!!!
  2. Connect to dl.google.com:443 [dl.google.com/142.250.66.142] failed: Connection timed out:
  3. C++学习笔记系列一
  4. kobject_create_and_add解析
  5. oracle日期类型格式转换,Oracle日期类型转换格式
  6. 组合查询--表单对象转化为json数组
  7. CVPR 2022 论文和开源项目合集
  8. 狗屎的Easy UI ,链接页面出错!搞了我一上午!
  9. 2021年最后一个月
  10. BAT、360、网易等大公司开源项目
  11. 创作原创歌词的韵律十三辙与韵脚押韵方法
  12. 程序员自编的中华古诗词数据库在GitHub上火了!
  13. 【数据可视化】AntV L7实现地图可视化,DrillDownLayer钻取异步获取数据,悬浮预警框
  14. R12应付模块详细结账流程
  15. Golang中使用JSON
  16. H5案例分享:微信视频播放全屏问题
  17. AR涂涂乐⭐五、关于“4”的部分解决方案
  18. pdf中添加声音 java_PDF怎么添加音频?你不能错过的PDF编辑器办公软件
  19. QIIME 2教程. 06沙漠土壤分析AtacamaSoil(2021.2)
  20. CSS:标准文档流、浮动、绝对定位—(解决有时候父元素不能自动扩展)

热门文章

  1. 项目Kick Off 我们应该做什么?
  2. 上古卷轴ol服务器正在维护,上古卷轴ol服务器在哪 | 手游网游页游攻略大全
  3. 中国地质大学英语语音学习笔记(三):音节与单词变形(ed,es,ing,est,er,派生等)导致的音节数和读音变化
  4. 【React】9、使用create-react-app(CRA)创建react项目
  5. 如何查看一篇论文是否被SCI检索
  6. 计算机学报英语,修改稿要求-计算机学报.PDF
  7. 【保姆级教学】用Java开发俄罗斯方块小游戏_Java练手项目_巩固JavaSE基础_Java小游戏
  8. 端午节谋定顺应自然-农业大健康·万祥军:根植古代农耕文化
  9. Element UI中的Descriptions描述列表
  10. 有域名得git是怎么弄得_部署到Github Pages上的博客,自定义域名,和免费域名如何申请...