实战tkinter图形界⾯开发_PythonGUI之tkinter窗⼝视窗教程⼤
集合(看这。。。
⼀、前⾔
由于本篇⽂章较长,所以下⾯给出内容⽬录⽅便跳转阅读,当然也可以⽤博客页⾯最右侧的⽂章⽬录导航栏进⾏跳转查阅。
⼀、前⾔
⼆、Tkinter 是什么
三、Tkinter 控件详细介绍
1. Tkinter 模块元素简要说明
2. 常⽤窗⼝部件及简要说明:
四、动⼿实践学习
1. 创建主窗⼝及Label部件(标签)创建使⽤
2. Button窗⼝部件
3. Entry窗⼝部件
4. Text窗⼝部件
5. Listbox窗⼝部件
6. Radiobutton窗⼝部件
7. Checkbutton窗⼝部件
8. Scale窗⼝部件
9. Canvas窗⼝部件
10. Menu窗⼝部件
11. Frame 窗⼝部件
12. messageBox窗⼝部件
13. 窗⼝部件三种放置⽅式pack/grid/place
14. 综合练习,⽤户登录窗⼝例⼦
15. 其他部件后续再补充...
⼆、Tkinter是什么
Tkinter 是使⽤ python 进⾏窗⼝视窗设计的模块。Tkinter模块("Tk 接⼝")是Python的标准Tk GUI⼯具包的接⼝。作为 python 特定的GUI界⾯,是⼀个图像的窗⼝,tkinter是python ⾃带的,可以编辑的GUI界⾯,我们可以⽤GUI 实现很多直观的功能,⽐如想开发⼀个计算器,如果只是⼀个程序输⼊,输出窗⼝的话,是没⽤⽤户体验的。所有开发⼀个图像化的⼩窗⼝,就是必要的。
对于稍有GUI编程经验的⼈来说,Python的Tkinter界⾯库是⾮常简单的。python的GUI库⾮常多,选择Tkinter,⼀是最为简单,⼆是⾃带库,不需下载安装,随时使⽤,三则是从需求出发,Python作为⼀种脚本语⾔,⼀种胶⽔语⾔,⼀般不会⽤它来开发复杂的桌⾯应⽤,它并不具备这⽅⾯的优势,使⽤Python,可以把它作为⼀个灵活的⼯具,⽽不是作为主要开发语⾔,那么在⼯作中,需要制作⼀个⼩⼯具,肯定是需要有界⾯的,不仅⾃⼰⽤,也能分享别⼈使⽤,在这种需求下,Tkinter是⾜够胜任的!
这篇⽂章主要做⼀个简单概述和实践编程,对于从没有接触过GUI的新⼿,在脑中树⽴⼀个基本的界⾯编程概念,同时⾃⼰也能学会如何简单的实现⼀些⼩的图形窗⼝功能。
对于Tkinter编程,可以⽤两个⽐喻来理解:
第⼀个,作画。我们都见过美术⽣写⽣的情景,先⽀⼀个画架,放上画板,蒙上画布,构思内容,⽤铅笔画草图,组织结构和⽐例,调⾊板调⾊,最后画笔勾勒。相应的,对应到tkinter编程,那么我们的显⽰屏就是⽀起来的画架,根窗体就是画板,在tkinter中则是Toplevel,画布就是tkinter中的容器(Frame),画板上可以放很多张画布(Convas),tkinter中的容器中也可以放很多个容器,绘画中的构图布局则是tkinter中的布局管理器(⼏何管理器),绘画的内容就是tkinter中的⼀个个⼩组件,⼀幅画由许多元素构成,⽽我们的GUI界⾯,就是有⼀个个组件拼装起来的,它们就是widget。第⼆个,我们⼩时候都玩过积⽊,只要发挥创意,相同的积⽊可以堆出各种造型。tkinter的组件也可以看做⼀个个积⽊,形状或许不同,其本质都是⼀样的,就是⼀个积⽊,不管它长什么样⼦,它始终就是积⽊!所以这些⼩组件都有许多共性,另外,个⼈认为,学习界⾯编程,最重要的不是⼀开始学习每个积⽊的样⼦,不是学习每个组件怎么⽤,⽽是这些组件该怎么放。初始学习中,怎么放远远⽐怎么⽤重要的多。⽹上有⼤量的⽂章资料,基本全是介绍组件怎么⽤的,对于怎么放,也就是tkinter中的布局管理器,都是⼀笔带过,这对初学者有点本末倒置,或许绝⼤部分是转载的原因吧,极少是⾃⼰真正写的。组件怎么⽤不是最迫切的,⽤到的时候再去了解也不迟,边⽤边学反⽽更好。因此我将专门写⼀
章,详细介绍布局管理器的使⽤。
三、Tkinter 控件详细介绍
1. Tkinter 模块元素简要说明
The Button WidgetThe Canvas WidgetThe Checkbutton WidgetThe Entry WidgetThe Frame WidgetThe Label WidgetThe LabelFrame WidgetThe Listbox WidgetThe Menu WidgetThe Menubutton WidgetThe Message WidgetThe OptionMenu WidgetThe PanedWindow WidgetThe Radiobutton WidgetThe Scale WidgetThe Scrollbar WidgetThe Spinbox WidgetThe Text WidgetThe Toplevel WidgetBasic Widget MethodsToplevel Window Methods
2. 常⽤窗⼝部件及简要说明:
Tkinter⽀持16个核⼼的窗⼝部件,这个16个核⼼窗⼝部件类简要描述如下:
Button:⼀个简单的按钮,⽤来执⾏⼀个命令或别的操作。
Canvas:组织图形。这个部件可以⽤来绘制图表和图,创建图形编辑器,实现定制窗⼝部件。
Checkbutton:代表⼀个变量,它有两个不同的值。点击这个按钮将会在这两个值间切换。
Entry:⽂本输⼊域。
Frame:⼀个容器窗⼝部件。帧可以有边框和背景,当创建⼀个应⽤程序或dialog(对话)版⾯时,帧被⽤来组织其它的窗⼝部件。
Label:显⽰⼀个⽂本或图象。
Listbox:显⽰供选⽅案的⼀个列表。listbox能够被配置来得到radiobutton或checklist的⾏为。
Menu:菜单条。⽤来实现下拉和弹出式菜单。
Menubutton:菜单按钮。⽤来实现下拉式菜单。
Message:显⽰⼀⽂本。类似label窗⼝部件,但是能够⾃动地调整⽂本到给定的宽度或⽐率。
Radiobutton:代表⼀个变量,它可以有多个值中的⼀个。点击它将为这个变量设置值,并且清除与这同⼀变量相关的其它radiobutton。
Scale:允许你通过滑块来设置⼀数字值。
Scrollbar:为配合使⽤canvas, entry, listbox, and text窗⼝部件的标准滚动条。
Text:格式化⽂本显⽰。允许你⽤不同的样式和属性来显⽰和编辑⽂本。同时⽀持内嵌图象和窗⼝。
Toplevel:⼀个容器窗⼝部件,作为⼀个单独的、最上⾯的窗⼝显⽰。
messageBox:消息框,⽤于显⽰你应⽤程序的消息框。(Python2中为tkMessagebox)
注意在Tkinter中窗⼝部件类没有分级;所有的窗⼝部件类在树中都是兄弟关系。
所有这些窗⼝部件提供了Misc和⼏何管理⽅法、配置管理⽅法和部件⾃⼰定义的另外的⽅法。此外,Toplevel类也提供窗⼝管理接⼝。这意味⼀个典型的窗⼝部件类提供了⼤约150种⽅法。
四、动⼿实践学习
1. 创建主窗⼝及Label部件(标签)创建使⽤
我们要学习使⽤上⾯提到的这些控件⾸先要创建⼀个主窗⼝,就像作画⼀样,先要架好架⼦和画板,然后才能在上⾯放画纸和各种绘画元素,创建好主窗⼝才能在上⾯放置各种控件元素。⽽创建过程是很简单的,如下:
⽰例代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪卫
import tkinter as tk # 使⽤Tkinter前需要先导⼊
# 第1步,实例化object,建⽴窗⼝window
window = tk.Tk()
# 第2步,给窗⼝的可视化起名字
window.title('My Window')
# 第3步,设定窗⼝的⼤⼩(长 * 宽)
# 第4步,在图形界⾯上设定标签
l = tk.Label(window, text='你好!this is Tkinter', bg='green', font=('Arial', 12), width=30, height=2)
# 说明: bg为背景,font为字体,width为长,height为⾼,这⾥的长和⾼是字符的长和⾼,⽐如height=2,就是标签有2个字符这么⾼
# 第5步,放置标签
l.pack() # Label内容content区域放置位置,⾃动调节尺⼨
# 放置lable的⽅法有:1)l.pack(); 2)l.place();
# 第6步,主窗⼝循环显⽰
window.mainloop()
# 注意,loop因为是循环的意思,window.mainloop就会让window不断的刷新,如果没有mainloop,就是⼀个静态的window,传⼊进去的值就不会有循环,mainloop就相当于⼀个很⼤的while循环,有个while,每点击⼀次就会更新⼀次,所以我们必须要有循环
# 所有的窗⼝⽂件都必须有类似的mainloop函数,mainloop是窗⼝⽂件的关键的关键。
测试效果:
2. Button窗⼝部件
简单说明:
Button(按钮)部件是⼀个标准的Tkinter窗⼝部件,⽤来实现各种按钮。按钮能够包含⽂本或图象,并且你能够将按钮与⼀个Python函数或⽅法相关联。当这个按钮被按下时,Tkinter⾃动调⽤相关联的函数或⽅法。
按钮仅能显⽰⼀种字体,但是这个⽂本可以跨⾏。另外,这个⽂本中的⼀个字母可以有下划线,例如标明⼀个快捷键。默认情况,Tab键⽤于将焦点移动到⼀个按钮部件。
什么时候⽤按钮部件
简⾔之,按钮部件⽤来让⽤户说“马上给我执⾏这个任务”,通常我们⽤显⽰在按钮上的⽂本或图象来提⽰。按钮通常⽤在⼯具条中或应⽤程序窗⼝中,并且⽤来接收或忽略输⼊在对话框中的数据。关于按钮和输⼊的数据的配合,可以参看Checkbutton和Radiobutton部件。
如何创建:
普通的按钮很容易被创建,仅仅指定按钮的内容(⽂本、位图、图象)和⼀个当按钮被按下时的回调函数即可:
b = tk.Button(window, text="hit me", command=hit_me)
没有回调函数的按钮是没有⽤的,当你按下这个按钮时它什么也不做。你可能在开发⼀个应⽤程序的时候想实现这种按钮,⽐如为了不⼲扰你的beta版的测试者:
b = tk.Button(window, text="Help", command=DISABLED)
⽰例代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪卫
import tkinter as tk # 使⽤Tkinter前需要先导⼊
# 第1步,实例化object,建⽴窗⼝window
window = tk.Tk()
# 第2步,给窗⼝的可视化起名字
window.title('My Window')
# 第3步,设定窗⼝的⼤⼩(长 * 宽)
# 第4步,在图形界⾯上设定标签
var = tk.StringVar() # 将label标签的内容设置为字符类型,⽤var来接收hit_me函数的传出内容⽤以显⽰在标签上
l = tk.Label(window, textvariable=var, bg='green', fg='white', font=('Arial', 12), width=30, height=2)
# 说明: bg为背景,fg为字体颜⾊,font为字体,width为长,height为⾼,这⾥的长和⾼是字符的长和⾼,⽐如height=2,就是标签有2个字符这么⾼
l.pack()
# 定义⼀个函数功能(内容⾃⼰⾃由编写),供点击Button按键时调⽤,调⽤命令参数command=函数名
on_hit = False
def hit_me():
global on_hit
if on_hit == False:
on_hit = True
var.set('you hit me')
else:
on_hit = False
var.set('')
# 第5步,在窗⼝界⾯设置放置Button按键
b = tk.Button(window, text='hit me', font=('Arial', 12), width=10, height=1, command=hit_me)
b.pack()
# 第6步,主窗⼝循环显⽰
window.mainloop()
测试效果:
3. Entry窗⼝部件
简单说明:
Entry是tkinter类中提供的的⼀个单⾏⽂本输⼊域,⽤来输⼊显⽰⼀⾏⽂本,收集键盘输⼊(类似 HTML 中的 text)。
什么时候⽤:
需要⽤户输⼊⽤户信息时,⽐如我们平时使⽤软件、登录⽹页时,⽤户交互界⾯让我们登录账户信息等时候可以⽤到。
⽰例代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪卫
import tkinter as tk # 使⽤Tkinter前需要先导⼊
# 第1步,实例化object,建⽴窗⼝window
window = tk.Tk()
# 第2步,给窗⼝的可视化起名字
window.title('My Window')
# 第3步,设定窗⼝的⼤⼩(长 * 宽)
# 第4步,在图形界⾯上设定输⼊框控件entry并放置控件
e1 = tk.Entry(window, show='*', font=('Arial', 14)) # 显⽰成密⽂形式
e2 = tk.Entry(window, show=None, font=('Arial', 14)) # 显⽰成明⽂形式
e1.pack()
e2.pack()
# 第5步,主窗⼝循环显⽰
python新手代码你好window.mainloop()
测试效果:
4. Text窗⼝部件
简单说明:
Text是tkinter类中提供的的⼀个多⾏⽂本区域,显⽰多⾏⽂本,可⽤来收集(或显⽰)⽤户输⼊的⽂字(类
似 HTML 中的 textarea),格式化⽂本显⽰,允许你⽤不同的样式和属性来显⽰和编辑⽂本,同时⽀持内嵌图象和窗⼝。
什么时候⽤:
在需要显⽰编辑⽤户、产品多⾏信息时,⽐如显⽰⽤户详细描述⽂字,产品简介等等,⽀持随时编辑。
⽰例代码:
#!/usr/bin/env python
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论