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 importtkinter5

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 importtkinter5

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 importtkinter5

6

7 deffunc():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 importtkinter5

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 importtkinter4

5 win =tkinter.Tk()6 win.title("yudanqu")7 win.geometry("400x400+200+50")8

9 defshowinfo():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 importtkinter4

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 importtkinter6

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 importtkinter4

5 win =tkinter.Tk()6 win.title("yudanqu")7 win.geometry("400x400+200+50")8

9 defupdata():10 message = ""

11 if hobby1.get() ==True:12 message += "money "

13 if hobby2.get() ==True:14 message += "power "

15 if hobby3.get() ==True:16 message += "people "

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 importtkinter2

3 win =tkinter.Tk()4 win.title("yudanqu")5 win.geometry("400x400+200+50")6

7 defupdata():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 importtkinter4

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 importtkinter2

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 defmyprint(event):26 #print(lb.curselection()) # 返回下标

27 print(lb.get(lb.curselection())) #返回值

28 lb.bind("", myprint)29

30 win.mainloop()

12、Listbox控件三

1 importtkinter2

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.yview23

24 win.mainloop()

13、Listbox四

1 importtkinter2

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 importtkinter2

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 defshowNum():26 print(scale1.get())27 tkinter.Button(win, text="按钮", command=showNum).pack()28

29 win.mainloop()

15、Spinbox控件

1 importtkinter2

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 defupdata():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 importtkinter2

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 deffunc():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 importtkinter2

3 win =tkinter.Tk()4 win.title("yudanqu")5 win.geometry("400x400+200+50")6

7 #菜单条

8 menubar =tkinter.Menu(win)9

10 deffunc():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 defshowMenu(event):27 menubar.post(event.x_root, event.y_root)28

29 win.bind("", showMenu)30

31 win.mainloop()

18、Combobox下拉控件

1 importtkinter2 from tkinter importttk3

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 deffunc(event):23 print(com.get())24 print(cv.get())25 com.bind("<>", func)26

27 win.mainloop()

19、Frame控件

1 importtkinter2

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 importtkinter2 from tkinter importttk3

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 importtkinter2 from tkinter importttk3

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 importtkinter2

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 importtkinter2

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 importtkinter2

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 importtkinter2

3 win =tkinter.Tk()4 win.title("yudanqu")5 win.geometry("400x400+200+50")6

7

8 deffunc(event):9 print(event.x, event.y)10

11 # 鼠标左键

12 # 鼠标滚轮

13 # 鼠标右键

14 # 鼠标双击左键

15 # 鼠标三击左键

16

17 button1 = tkinter.Button(win, text="leftmouse button")18 #bind 给控件绑定数据(参数一是绑定的事件,参数二是触发事件的函数)

19 button1.bind("", func)20 button1.pack()21

22 win.mainloop()

26、鼠标移动事件

1 importtkinter2

3 win =tkinter.Tk()4 win.title("yudanqu")5 win.geometry("400x400+200+50")6

7

8 # 左键移动

9 # 中键移动

10 # 右键移动

11

12

13 label = tkinter.Label(win, text="*********")14 label.pack()15

16 deffunc(event):17 print(event.x, event.y)18

19 label.bind("", func)20

21 win.mainloop()

27、鼠标释放事件

1 importtkinter2

3 win =tkinter.Tk()4 win.title("yudanqu")5 win.geometry("400x400+200+50")6

7 # 释放鼠标左键

8 # 释放鼠标中键

9 # 释放鼠标右键

10

11

12 label = tkinter.Label(win, text="*********", bg="red")13 label.pack()14

15 deffunc(event):16 print(event.x, event.y)17

18 label.bind("", func)19

20 win.mainloop()

28、进入和离开事件

1 importtkinter2

3 win =tkinter.Tk()4 win.title("yudanqu")5 win.geometry("400x400+200+50")6

7 # 当鼠标进入控件时触发事件

8 # 当鼠标离开控件时触发事件

9

10 label = tkinter.Label(win, text="*********", bg="red")11 label.pack()12

13 deffunc(event):14 print(event.x, event.y)15

16 label.bind("", func)17 label.bind("", func)18

19

20 win.mainloop()

29、响应所有按键的事件

1 importtkinter2

3 win =tkinter.Tk()4 win.title("yudanqu")5 win.geometry("400x400+200+50")6

7 # 响应所有的按键(要有焦点)

8

9 label = tkinter.Label(win, text="*********", bg="red")10 #设置焦点

11 label.focus_set()12 label.pack()13

14 deffunc(event):15 print("event.char=", event.char)16 print("event.keycode=", event.keycode)17

18 label.bind("", func)19

20 win.mainloop()

30、响应特殊按键事件

1 importtkinter2

3 win =tkinter.Tk()4 win.title("yudanqu")5 win.geometry("400x400+200+50")6

7 # 只响应左侧的shift键

8 #

9 #

10 # 也就是回车键

11 # 返回,也就是退格键

12

13 label = tkinter.Label(win, text="*********", bg="red")14 #设置焦点

15 label.focus_set()16 label.pack()17

18 deffunc(event):19 print("event.char=", event.char)20 print("event.keycode=", event.keycode)21

22

23 label.bind("", func)24

25

26 win.mainloop()

31、指定按键事件

1 importtkinter2

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 deffunc(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 importtkinter2

3 win =tkinter.Tk()4 win.title("yudanqu")5 win.geometry("400x400+200+50")6

7

8 #

9 #

10 #只是control+alt不行

11

12 label = tkinter.Label(win, text="*********", bg="red")13 #设置焦点

14 label.focus_set()15 label.pack()16

17 deffunc(event):18 print("event.char=", event.char)19 print("event.keycode=", event.keycode)20

21

22 win.bind("", func) #注意前面改成了win,只需要写出按键名即可

23

24

25 win.mainloop()

python开发的优秀界面-tkinter python(图形开发界面)相关推荐

  1. 实战tkinter图形界面开发_如何进行简单的图形开发?

    经过前两篇文章的讲解,我们已经了解了关于图形用户界面,即GUI的知识. 作为初学者,用开发组件tkinter在Python中进行图形开发,是有它的一套规则的. 一般的开发步骤分为五步, 导入tkint ...

  2. python实现qq登录界面_使用Python编写一个QQ办公版的图形登录界面!

    最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...

  3. python制作qq登录界面_使用Python编写一个QQ办公版的图形登录界面

    最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...

  4. aspnet登录界面代码_使用Python编写一个QQ办公版的图形登录界面!

    最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...

  5. python做可视化界面tkinter,python做可视化界面程序

    python 可视化界面怎么做 首先,如果没有安装python和PyQt软件的请先直接搜索下载并安装.python是一个开源软件,因此都是可以在网上免费下载的,最新版本即可.下载完成后,我们先打开Py ...

  6. python开发的优秀界面-八款常用的 Python GUI 开发框架推荐

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 乔柯 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  7. Python开发图形可视化界面程序(一)

    前言 近来使用Python开发了一些简单的辅助脚本,发现这真的是一门很有趣的语言:于是乎,便想着使用python来开发一些具有图形可视化界面(GUI)的程序,对于python来说,支持其开发GUI可视 ...

  8. Python如何用TKinter搭建图形界面窗口,并通过多进程的方式调用功能函数

    用Python开发图形界面和程序时,经常会对图形界面的搭建感到失望,或许是由于对图形界面不熟悉的原因吧,总之一想到图形界面,就感觉会很费时.费力,编程的积极性大幅下降.最近,尝试用Tkinter创建了 ...

  9. python tkinter界面布局,python图形界面tkinter布局那些事

    布局 任何界面都有自己的布局风格,有些是横向布局,有些是纵向布局,有些是流水布局,还有些是网格布局,总之布局就是一种考虑如何放置元素或者组件的一种说明方式. 包裹(包装)布局 thinter中使用pa ...

最新文章

  1. kali linux状态栏显示网速
  2. Python 数据科学入门教程:NLTK
  3. python里的shell是什么_Python与shell的3种交互方式介绍
  4. 英特尔面向网络及边缘推出至强D系列处理器
  5. 智能家居实训系统的项目有感!
  6. 干货 | 推荐几款实用的思维导图工具
  7. [转载]从KX、KR用户的购镜选择谈到K5和其他
  8. 【Excel VBA】自动调整列宽和行高
  9. 浅谈LBP原理和代码(基于Python)
  10. android 美团拆包,如何进行拆包合包操作?
  11. java给图片、word、ppt、excel、pdf添加水印
  12. 如果黑客转行干活动策划,我再也不怕开会睡着了
  13. SQL Server 空间管理——表空间
  14. python多维字典_python定义多维字典
  15. 淘宝的互动项目,为什么总会刷爆你的好友圈?
  16. 相机数据恢复,60%的人都在用的黄金方案
  17. CRMEB知识付费V2.1.4免授权版本更新发布
  18. 编写CSDN博客,如何去掉插入的图片上的水印
  19. 【车辆管理系统——开题报告 分享(仅供参考呀)】
  20. 【前端王一】- 萌新入场

热门文章

  1. 不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标
  2. 【Web Shell】- 技术剖析中国菜刀 - Part II
  3. Windows Server 2016 禁止自动更新后重启
  4. java maven compiler设置默认1.8
  5. WeQuant交易策略—简单均线
  6. CSS布局之float浮动
  7. 正则学习(2)--- 简单匹配原理
  8. iOS基础-高级视图-UITableView--实例:app管理
  9. 如何去应付你的上司给你一个变化无常的需求?
  10. 前台使用三元运算符判断显示