Python编程之Tkinter的使用01
Python
提供了多个图形开发界面的库,几个常用Python GUI
库如下:
Tkinter
:Tkinter
模块(Tk 接口)是Python
的标准 Tk GUI 工具包的接口.Tk
和Tkinter
可以在大多数的Unix
平台下使用, 同样可以应用在Windows
和Macintosh
系统里。Tk8.0
的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。wxPython
:wxPython
是一款开源软件,是Python
语言的一套优秀的GUI
图形库,允许Python
程序员很方便的创建完整的、功能健全的GUI
用户界面。Jython
:Jython
程序可以和Java
无缝集成。除了一些标准模块,Jython
使用Java
的模块。Jython
几乎拥有标准的Python
中不依赖于C
语言的全部模块。比如,Jython
的用户界面将使用Swing
,AWT
或者SWT
。Jython
可以被动态或静态地编译成Java
字节码
Tkinter
介绍
Tkinter
是Python
的标准GUI
库。Python
使用Tkinter
可以快速的创建GUI
应用程序。- 由于
Tkinter
是内置到python
的安装包中、只要安装好Python
之后就能import Tkinter
库、而且IDLE
也是用Tkinter
编写而成、对于简单的图形界面Tkinter
还是能应付自如
需要注意: `Python3.x`版本使用的库名为 `tkinter`,即首写字母`T`为小写
1 | import tkinter |
- 创建一个GUI程序
- 1、导入
tkinter
模块 - 2、创建控件
- 3、指定这个控件的
master
,即这个控件属于哪一个 - 4、告诉
GM(geometry manager)
有一个控件产生了
- 1、导入
主窗口
- 在
iOS
中每一个APP
都有一个主窗口window
, 该window
就是所有视图嘴地城最基础的视图View
- 在
Python
中童谣也会有一个主窗口, 下面看一下tkinter
生成主窗口的方法
1 | # 主窗口 |
效果如下
主窗口除了上述方法之外还有以下方法
1 | # 框体大小的可调性, 分别表示x, y方向的可变性 |
Tkinter
组件
Tkinter
的提供各种控件,如按钮,标签和文本框,一个GUI
应用程序中使用, 这些控件通常被称为控件或者部件- 目前有15种Tkinter的部件, 下面是对这些部件以及一个简短的介绍
控件 | 描述 |
---|---|
Label |
标签控件, 可以显示文本和位图 |
Button |
按钮控件, 在程序中显示按钮 |
Entry |
输入控件;用于显示简单的文本内容 |
Checkbutton |
多选框控件;用于在程序中提供多项选择框 |
Frame |
框架控件;在屏幕上显示一个矩形区域,多用来作为容器 |
Canvas |
画布控件;显示图形元素如线条或文本 |
Listbox |
列表框控件;在Listbox 窗口小部件是用来显示一个字符串列表给用户 |
Menubutton |
菜单按钮控件,由于显示菜单项。 |
Menu |
菜单控件;显示菜单栏,下拉菜单和弹出菜单 |
Message |
消息控件;用来显示多行文本,与label 比较类似 |
Radiobutton |
单选按钮控件;显示一个单选的按钮状态 |
Scale |
范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
Scrollbar |
滚动条控件,当内容超过可视化区域时使用,如列表框 |
Text |
文本控件;用于显示多行文本 |
Spinbox |
输入控件;与Entry 类似,但是可以指定输入范围值 |
PanedWindow |
一个窗口布局管理的插件,可以包含一个或者多个子控件 |
LabelFrame |
一个简单的容器控件, 常用与复杂的窗口布局 |
tkMessageBox |
用于显示你应用程序的消息框 |
如果之前做过H5前端开发或者iOS等页面相关开发工作的, 应该能到, 其实这些组件和其他开发语言提供的组件功能相似, 属性也类似, 下面我们先看一下一些通用的属性介绍
属性值 | 属性描述 |
---|---|
bg |
控件的背景颜色 |
fg |
组件中的字体颜色 |
font |
设置文本的字体样式和字号 |
height |
设置控件高度 |
width |
设置控件宽度 |
bd |
设置控件边框的大小, 默认2个像素 |
relief |
设置边框样式, 有falt, sunken, raised, groove, ridge, 默认flat |
text |
设置文本内容 |
anchor |
瞄点, 控制文本的位置, 默认居中(可选: n北, e东, s南, w西, center居中, ne se, sw, nw) |
justify |
显示多行文本的时候,设置不同行之间的对齐方式(left, right, center) |
wraplength |
根据宽度限制控件每行显示的字符的数量 |
underline |
下划线, 默认没有; 取值就是带下划线的字符串索引,为 0 时,第一个字符带下划线 |
padx |
在x轴方向上的内边距(padding),是指控件的内容与控件边缘的距离 |
pady |
在y轴方向上的内边距(padding) |
Label
控件
Label
控件用以显示文字和图片.Label
通常被用来展示信息, 而非与用户交互Label
也可以绑定点击等事件, 只是通常不这么用
1 | label = tkinter.Label(window, |
显示效果
部分属性介绍
anchor
: 文本在空间中的显示位置(按上北下南, 左西右东规则), 可选值有(n北 e东 s南 w西 center居中 ne西北 se东南 sw西南 nw东北)方向image
: 显示的图片
Button
控件
Button
控件是一个标准的Tkinter
小部件,用于各种按钮, 如果用鼠标点击按钮,可能会开始一些操作Button
可以显示文本和图片- 按钮只能以单一字体显示文本, 文本可以跨越多行
1 | # 设置标题 |
效果样式
部分属性介绍
activebackground
: 当鼠标放上去时,按钮的背景色activeforeground
: 当鼠标放上去时,按钮的文本颜色highlightcolor
: 要高亮的颜色image
: 按钮上要显示的图片state
: 设置按钮组件状态,可选的有(normal(默认), active, disabled)command
: 按钮的绑定函数方法, 接受一个函数名,注意函数名不要加引号
Entry
输入
输入控件, 用于显示简单的文本内容, 和iOS
中的UITextField
一样, 示例如下
1 | vari = tkinter.Variable() |
效果样式
监听输入框内文字的改变
- 这里我们需要通过设置一下三个选项
validate
: 设置输入框的监听状态focus
:当Entry
组件获得或失去焦点的时候验证focusin
: 当Entry
组件获得焦点的时候验证focusout
: 当Entry
组件失去焦点的时候验证key
:当输入框被编辑的时候验证all
: 当出现上边任何一种情况的时候验证
validatecommand
: 接受一个判断输入框内的文字是否符合要求的函数, 该函数只能返回 True 或 False 表示验证的结果invalidcommand
: 指定的函数只有在validatecommand
的返回值为False
的时候才被调用
1 | # 主窗口 |
Text
多行文本
Text
文本组件用于显示和处理多行文本。- 在
Tkinter
的所有组件中,Text
组件显得异常强大和灵活,它适用于处理多任务 - 当创建一个
Text
组件的时候里面是没有内容的。为了给其插入内容,可以使用insert()
以及INSERT
或END
索引号
插入文本/控件/图片
1 | text = Text(window, bg='yellow', width=40, height=10) |
索引值
Indexes
(索引)是用来指向Text
组件中文本的位置,跟python
的序列索引一样,Text
的组件索引也是对应实际字符之间的位置- 值得注意的是: 行号以1开始 列号以0开始
- 例如: 2.4表示第2行第4列的字符
1 | from tkinter import * |
Text中的Tags
Tags
通常用于改变Text组件中内容的样式和功能,你可以修改文本的字体,尺寸和颜色,另外Tags
还允许你将文本、嵌入的组件和图片与键盘相关联,除了user-defined tags
(用户自定义的Tags
)
1 | text.insert(INSERT, '自定义标签的名字') |
带滚动条
1 | text = Text(window, bg='yellow', width=100, height=10) |
效果样式
Checkbutton多选按钮
Checkbutton
可以表示两种状态:On
和Off
,可以设置回调函数,每当点击此按钮时回调函数被调用- 这里有一个示例: 选择不同的复选框, 会有不同的文本显示
1 | def update(): |
效果样式
Radiobutton单选框
Radiobutton
为单选按钮,即在同一组内只能有一个按钮被选中,每当选中组内的一个按钮时,其它的按钮自动改为非选中态,与其他控件不同的是:它有组的概念
1 | def selectorAction(): |
效果样式
未完待续, 后期会继续更新其他控件的相关介绍……….