0x00:安装和使用Tkinter
如果你电脑上的Python 没有 Tkinter模块的话,你就需要使用 pip 安装 tkinter 模块。
0x01:GUI 程序启动和运行的步骤
- 导入 Tkinter 模块
- 创建一个顶层的窗口对象,用于容纳整个GUI 界面
- 在顶层的窗口对象上(或者其中)构建所有的 GUI 组件
- 通过底层的应用代码将这些GUI组件连接起来
- 进入主事循环
0x02:窗口和控件
在GUI 编程中,顶层的窗口对象包含组成GUI 应用的所有小窗口对象。他们可能是文字标签、按钮、列表框等, 这些独立的GUI组件成为控件。 当我们说创建一个顶层窗口时,只是表示需要创建一个地方来摆放所有的控件。
top = Tkinter.TK 或者 just TK() with "from Tkinter import"
Tkinterr.TK 返回的对象称为窗口,顶层窗口时在 应用中独立显示的部分,GUI 中可以有多个顶层窗口,只有有一个是根窗口。 可以选择先把空间设计好,在添加功能。
控件可以独立存在,也可以作为容器存在,如果一个控件包含其他控件,就可以将其认为是哪个控件的父控件。
0x03:事件驱动器
事件可以包括按钮按下(释放)、鼠标移动、敲击回车创建等。一个 GUI 应用从开始到结束 就是 通过整套时间体系来驱动的。这种方式称为事件驱动器。
0x04:布局管理器
TK 有三种布局管理器来帮助控件集进行定位。
(1)Placer :提供控件的大小和摆放位置,然后管理器就会将其摆放好,需要对所有 的控件进行操作,就会加重编程的负担。
(2) Packer :会把控件填充到正确的位置(指定的父控件中),然后对于之后的每个控件,会去寻找剩余的空间进行填充。
(3)Grid: 基于网格坐标,使用Grid 来指定控件的位置,Grid 会把它们的网络位置渲染GUI应用的每个对象。
当所有的控件摆放好之后,可以让应用程序进入前面讲述的无限循环中。
Tkinter.mainloop()
一般这是 程序运行的最后一行代码。当进入主循环之后,GUI就从这里开始接管程序的执行。所有其他程序都会通过回调来进行处理,甚至包括退出应用。当选择File菜单并单击Exit 菜单选项,就会调用一个回调函数来结束这个GUI应用。
0x05:Tkinter 组件
Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。
目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:
控件 | 描述 |
---|---|
Button | 按钮控件;在程序中显示按钮。 |
Canvas | 画布控件;显示图形元素如线条或文本 |
Checkbutton | 多选框控件;用于在程序中提供多项选择框 |
Entry | 输入控件;用于显示简单的文本内容 |
Frame | 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 |
Label | 标签控件;可以显示文本和位图 |
Listbox | 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 |
Menubutton | 菜单按钮控件,用于显示菜单项。 |
Menu | 菜单控件;显示菜单栏,下拉菜单和弹出菜单 |
Message | 消息控件;用来显示多行文本,与label比较类似 |
Radiobutton | 单选按钮控件;显示一个单选的按钮状态 |
Scale | 范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
Scrollbar | 滚动条控件,当内容超过可视化区域时使用,如列表框。. |
Text | 文本控件;用于显示多行文本 |
Toplevel | 容器控件;用来提供一个单独的对话框,和Frame比较类似 |
Spinbox | 输入控件;与Entry类似,但是可以指定输入范围值 |
PanedWindow | PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。 |
LabelFrame | labelframe 是一个简单的容器控件。常用与复杂的窗口布局。 |
tkMessageBox | 用于显示你应用程序的消息框。 |
标准属性
标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。
属性 | 描述 |
---|---|
Dimension | 控件大小; |
Color | 控件颜色; |
Font | 控件字体; |
Anchor | 锚点; |
Relief | 控件样式; |
Bitmap | 位图; |
Cursor | 光标; |
几何管理
Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,以下是Tkinter公开的几何管理类:包、网格、位置
几何方法 | 描述 |
---|---|
pack() | 包装; |
grid() | 网格; |
place() | 位置; |