1、GUI是什么?
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。
2、Python中的GUI编程
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 字节码。
3、Tkinter编程
Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。
4、如何来创建一个GUI程序?
(1)、导入 tkinter 模块
(2)、创建窗口
(3)、创建控件
(4)、显示控件和窗口
Eg:
from tkinter import *
#导入模块
tk_bg = Tk()
#创建窗口
bm=Button()
#创建按键控件
bm.pack()
#显示控件(放在窗口创建的后面)
tk_bg.mainloop()
#显示窗口(放最下面)
5、画一个简单的的窗口
想要在窗口显示文字,需要调用Label()控件,想要在窗口上显示按键,需要调用Button()控件。
eg:
from tkinter import *
tk_bg = Tk()
tk_bg.title("第一个GUI")
#窗口名称
lb=Label()
#创建一个输出框控件
lb["text"]= "Hello World!"
#写入文本
lb["width"]=100
#设置该控件左右宽度
lb["height"]=10
#设置该控件上下高度
lb.pack()
#显示控件
bm=Button()
#创建按键控件
bm["text"]= "确定"
#写入文本
bm.pack()
#显示控件
tk_bg.mainloop()
#显示窗口
注:TK中的窗口显示顺序默认是自上而下的,先调用pack()的控件会显示在上面,后调用的会显示在下面。
6、在窗口显示图片。
想要在窗口中显示图片,只需要将输出框控件和图片关联就可以了。
eg:
from tkinter import *
#导入模块
tk_bg = Tk()
#创建窗口
tk_bg.title("毁图秀秀")
#修改窗口名字
lb1=Label()
#创建一个输出框控件
w =PhotoImage(file ="123.gif")
#创建一个图片对象,图片只能是gif
lb1["image"]=w
#关联图片到控件
lb1.pack()
#显示控件
tk_bg.mainloop()
#显示窗口
注:图片文件要和源代码放在同一个文件夹,否则请使用绝对路径指定图片位置。
7、排列控件顺序
想要在一行显示多个控件,需要使用Frame()来集中管理。
eg:
from tkinter import *
#导入模块
tk_bg = Tk()
#创建窗口
tk_bg.title("阁下的相册")
#修改窗口名字
fm1 = Frame()
#生成集中管理对象fm1
w1 =PhotoImage(file ="123.gif")
#创建一个图片对象,图片只能是gif
Label(fm1,image=w1).pack(side="left")
#创建输出框控件关联fm1和w1图片,控件显示方式为最左边
w2 =PhotoImage(file ="234.gif")
#创建一个图片对象,图片只能是gif
Label(fm1,image=w2).pack(side="left")
#创建输出框控件关联fm1和w2图片,控件显示方式为最左边
fm1.pack()
#显示fm1关联的所有控件
fm2 = Frame()
#生成集中管理对象fm2
Button(text="可爱",font=("楷体",20)).pack(side="bottom")
#创建按键控件关联fm2,控件显示方式为最下方
Button(text="很可爱",font=("楷体",20)).pack(side="bottom")
#创建按键控件关联fm2,控件显示方式为最下方
Button(text="非常可爱",font=("楷体",20)).pack(side="bottom")
#创建按键控件关联fm2,控件显示方式为最下方
fm2.pack()
#显示fm2关联的所有控件
tk_bg.mainloop()
#显示窗口
注:主义观察控件的输出,非常可爱是在最上面的,想一想为什么(因为bottom把最前面的可爱放在了最下面)。side有四种方式 top、bottom、left、right。
以下为TK的方法和属性附录
1、Tkinter组件
Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。
控件
描述
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
用于显示你应用程序的消息框。
2、Tkinter几何管理
Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,以下是Tkinter公开的几何管理类:包、网格、位置
3、Tkinter控件属性
作者:zeruns