为了方便用户输入图像并查看各种算法的处理结果,需要开发用户界面,内含菜单、文本提示、按钮等关键要素。本节介绍开发图像处理仿真系统的界面技术。
1.常用设计图形界面的模块
Python有多种用于设计用户界面的模块,常用的模块有以下几种:
● Tkinter:使用Tk平台,Python系统自带的标准图形用户界面库;
● Wxpython:基于WxWidgets平台,具有跨平台的特性;
● PythonWin:只能在Windows上使用,使用了本机的Windows GUI功能;
● PyGTK:使用GTK平台,在Linux上很流行;
● PyQt:使用Qt平台,跨平台。
2.使用Tkinter库创建窗口界面
Tkinter是Python的标准GUI库,它提供了丰富的组件和布局管理器,能够快速地创建用户界面应用程序,其模块中的Tk接口是Python的标准GUI工具包的接口,使用import tkinter命令即可将该模块导入程序。
使用Tkinter模块的基本步骤如下:
(1)导入Tkinter模块。
例如:
(2)创建一个顶层容器对象。
例如:
(3)在顶层容器对象中,添加其他组件。
(4)采取调用pack()方法进行容器的组件布局。
(5)进入主事件循环。
当容器进入主事件循环状态时,容器内部的其他图形对象就处于循环等待状态,这样才能一直保持显示状态。
上面的代码中,首先导入了Tkinter模块,并创建了一个窗口对象。然后,设置窗口标题,设置窗口大小,调用窗口对象的mainloop()运行主事件循环。
3.布局管理
在Tkinter中,布局管理器负责管理组件的位置和大小。目前,Tkinter提供了三种布局管理器:pack、grid和place。
(1)pack布局管理器:按组件的创建顺序在容器区域中排列。pack布局的常用属性有side和fill。
side属性:其取值为‘top’、‘bottom’、‘left’或‘right’,分别表示组件排列在上、下、左、右的位置。默认为‘top’。
fill属性:其取值为‘x’、‘y’或‘both’,分别表示填充x(水平)或y(垂直)方向的空间。
(2)grid布局管理器:将窗口划分为网格,将组件放置到指定的网格中。grid布局的常用属性有:row(行)、column(列)、rowspan(组件占据行数)、columnspan(组件占据列数)。
(3)place布局管理器:允许开发者精确地控制组件的位置和大小,指定组件的坐标位置排列,这种排列方式又称为绝对布局。
4.组件
这里介绍仿真系统所用的组件。
(1)创建标签组件Label
下面创建一个标签组件Label,并使用pack()方法将它们添加到窗口中。
(2)添加按钮Button
按钮组件用于在应用程序中添加按钮。创建一个按钮组件Button,按钮上可以显示文本或图像,并使用pack()方法将它们添加到窗口中。按钮与一个回调函数关联,当用户单击按钮时,自动调用该回调函数。
本书的集成系统界面按钮【运行】与回调函数start()关联,当用户单击【运行】按钮时,自动调用该回调函数,就会在界面的右侧显示处理后的图片,start()函数内容见1.4.2节。
5.菜单
创建菜单的主要步骤如下:
(1)创建菜单条对象:menubar = Menu(窗体容器)。
(2)把菜单条放置到窗体中:窗体容器.config(menu = menubar)。
(3)在菜单条中创建菜单:菜单名称= Menu(menubar, tearoff = 0)。
其中,tearoff取值0表示菜单不能独立使用。
(4)为菜单添加文字标签。
menubar.add_cascade(label = "文字标签", menu =菜单名称)
(5)在菜单中添加菜单项。
菜单名称.add_command (label = " 菜单项名称",command = 功能函数名)
例如: