这篇文章主要介绍了python 开发窗体应用程序,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。
本篇文章给大家谈谈python如何做出图形界面,以及用python做图形用户界面,希望对各位有所帮助,不要忘了收藏本站喔。
一、图形界面编程
图形用户界面(Graphical User Interface,GUI)是用户与程序交互的接口,好的GUI会大大提高用户交互体验,其实就是我们平时使用电脑时,使用鼠标、键盘点击的程序界面python画烟花代码完整。
Python提供很多创建GUI的程序库,程序员可以选择其中的一个来创建自己的程序界面ai伪原创api,如何用php调用。
- PyGObject: 基于GObject的C函数库提供了内省绑定,这些库支持GTK+3图形界面工具集,因此PyGObject提供了丰富的图形界面组件。
- PyGTK:基于老版GTK+2的库(C语言)提供绑定,官方网站。
- PyQt:Python编程语言和Qt库(C++GUI应用开放框架)的融合,可跨平台使用
- PySide:Nokia提供的Qt封装,
- wxPython:以wxWidgets为基础,在不同平台调用不同的本都组件,以符合平台风格。跨平台GUI库,官方网站。
如果读者需要,可以选择任意的GUI库来开发图形界面。如果考虑开发跨平台界面,推荐使用PyQt或wxPython。
本章介绍的GUI库时Tkinter,它是Python自带的GUI库,无需额外下载安装,只要导入tkinter包即可使用。
与其他编程语言的 GUI 工具包相比,Tkinter 编码效率高,能够实现快速开发的目的,非常适合初学者学习。Tkinter 使用纯 Python 语言开发,与 C/C++ 开发的 Qt 框架相比,Tkinter 有自身的局限性,比如性能、功能丰富程度等都不及 Qt,因此它只适合开发一些简单的程序,比如计算器的界面,或者一个简易的聊天窗口等。
学习GUI编程类似于搭建积木的过程,我们也通过这个步骤来讲解:
- 了解我们这套积木中都含有哪些积木块(GUI库中包含的组件),都是个什么东西。
- 准备一张桌子来作为工作场地(建立程序主窗口)
- 将积木拼接在一起(在容器/窗口中对组件布局)
- 深入掌握每个积木块的功能和用法(各组件用法,完成工作内容)
接下来我们将一步一步实现界面编程。
1.1 Tkinter GUI编程组件
其实,Tkinter是一个程序包,里面包含了很多模块,例如Tk、ttk、messagebox等,Tk模块是创建简单界面的主要模块,其中的组件也是继承了object类,下图显示了各组件的继承关系:
现在我们来了解一下‘积木块’的大体功能,不求完全记住,后面还会有详细讲解。
下表列出了 Tkinter 中常用的 15 个组件:
组件类型 | 组件名称 | 组件作用 |
---|---|---|
Button | 按钮 | 点击按钮时触发/执行一些事件(函数) |
Canvas | 画布 | 提供绘制图,比如直线、矩形、多边形等 |
Checkbutton | 复选框 | 多项选择按钮,用于在程序中提供多项选择框 |
Entry | 文本框输入框 | 用于接收单行文本输入 |
Frame | 框架(容器)控件 | 定义一个窗体(根窗口也是一个窗体),用于承载其他控件,即作为其他控件的容器 |
Lable | 标签控件 | 用于显示单行文本或者图片 |
LableFrame | 容器控件 | 一个简单的容器控件,常用于复杂的窗口布局。 |
Listbox | 列表框控件 | 以列表的形式显示文本 |
Menu | 菜单控件 | 菜单组件(下拉菜单和弹出菜单) |
Menubutton | 菜单按钮控件 用于显示菜单项 | |
Message | 信息控件 | 用于显示多行不可编辑的文本,与 Label控件类似,增加了自动分行的功能 |
messageBox | 消息框控件 | 定义与用户交互的消息对话框 |
OptionMenu | 选项菜单 | 下拉菜单 |
PanedWindow | 窗口布局管理组件 | 为组件提供一个框架,允许用户自己划分窗口空间 |
Radiobutton | 单选框 | 单项选择按钮,只允许从多个选项中选择一项 |
Scale | 进度条控件 | 定义一个线性“滑块”用来控制范围,可以设定起始值和结束值,并显示当前位置的精确值 |
Spinbox | 高级输入框 | Entry 控件的升级版,可以通过该组件的上、下箭头选择不同的值 |
Scrollbar | 滚动条 | 默认垂直方向,鼠标拖动改变数值,可以和 Text、Listbox、Canvas等控件配合使用 |
Text | 多行文本框 | 接收或输出多行文本内容 |
Toplevel | 子窗口 | 在创建一个独立于主窗口之外的子窗口,位于主窗口的上一层,可作为其他控件的容器 |
在后续内容中,我们会陆续对上表中涉及的组件(也有称为控件的)进行介绍。当然,除了上述组件外,还有一些高级组件,比如 PanedWindow、messagebox、LableFrame、Spinbox,在后续章节也会讲解。
从上表来看,每个组件都有着各自不同的功能,即使有些组件功能相似,但它们的适用场景也不同。
在 Tkinter 中不同的组件受到各自参数的约束(即参数),所有组件既有相同属性,也有各自独有的属性。本节内容,先对这些组件的共用属性做简单介绍,如下表所示:
属性名称 | 说明 | 单位 | 典型值 |
---|---|---|---|
background(bg) | 背景颜色,参数值可以颜色的十六进制数,或者颜色英文单词 | COLOR | ‘gray25’或‘#ff4400’ |
foreground(fg) | 前景色,也就是字体的颜色,参数值可以颜色的十六进制数,或者颜色英文单词 | COLOR | ‘gray25’或‘#ff4400’ |
activebackground | 激活状态时的背景色 | color | ‘gray25’或‘#ff4400’ |
activeforeground | 激活状态时的前景色 | color | ‘gray25’或‘#ff4400’ |
highlightbackground | 高亮状态时的背景色 | color | ‘gray25’或‘#ff4400’ |
highlightcolor | 高亮状态时的前景色 | color | ‘gray25’或‘#ff4400’ |
selectbackground | 选中状态时的背景色 | color | ‘gray25’或‘#ff4400’ |
selecforeground | 选中状态时的前景色 | color | ‘gray25’或‘#ff4400’ |
disabledforground | 禁止状态时的前景色 | color | ‘gray25’或‘#ff4400’ |
height | 该参数值用来设置组件的高度,文本控件以字符的高度(px,font指定),其他控件则以像素为单位 | px或pixel | 14 |
width | 用于设置控件的宽度,文本控件以字符的高度(px,font指定),其他控件则以像素为单位 | px或pixel | 14 |
borderwidth | 定于组件的边框宽度 | pixel | 2 |
highlightthickness | 高亮状态下周围方形区域宽度 | pixel | 2 |
selectborderwidth | 选中状态时的边框宽度 | pixel | 2 |
relief | 定义组件的边框样式 | constant | FLAT(平的)/RAISED(凸起的)/SUNKEN(凹陷的)/GROOVE(沟槽桩边缘)/RIDGE(脊状边缘) |
image | 定义显示在组件内的图片文件 | address | |
bitmap | 定义显示在组件内的位图文件,受anchor、justify选项影响,同时指定bitmap、text、image时,可能会覆盖低优先级的选项,优先级关系为image>bitmap>text | address | |
text | 定义控件的标题文字 | str | ‘确定’ |
testcariable | 指定显示文本的变量 | variable | bnText |
font | 若组件支持设置标题文字,就可以使用此属性来定义,它是一个数组格式的参数 (字体,大小,字体样式) | 数组 | ‘Helvetica’或(‘Verdana’,8) |
anchor | 定义组件信息(文本或图片)在窗口内的位置 | N(上)、NE(左上角)、E(右)、SE、S、SW、W、NW、CENTER | |
justify | 定义多行文字的对齐方式 | constant | LEFT/CENTER/RIGHT |
padx/pady | 定义组件内的文字或者图片与控件边框之间的水平/垂直距离 | pixel | 12 |
state | 控制组件是否处于可用状 |