tkinter python(图形开发界面)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了tkinter python(图形开发界面),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含18616字,纯文字阅读大概需要27分钟。
内容图文
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 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 += "money\n"13if hobby2.get() == True:
14 message += "power\n"15if hobby3.get() == True:
16 message += "people\n"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/caicaicaicaicai/p/13385192.html
内容总结
以上是互联网集市为您收集整理的tkinter python(图形开发界面)全部内容,希望文章能够帮你解决tkinter python(图形开发界面)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。