搜故事,从300万个故事到海量知识百科的华丽转变!

Python+PyQt架构:使用设计师编写界面程序入门示例

时间:2009-06-08

对于界面程序的设计,可以使用代码构建,也可以借助于其提供的设计师Qt Designer工具来构建

提示:本文共有 2447 个字,阅读大概需要 5 分钟。

PyQt是Qt界面库在Python下的绑定,为在Python语言下编写GUI界面程序提供了极大的便利。对于界面程序的设计,可以使用代码构建,也可以借助于其提供的设计师(Qt Designer)工具来构建。

下面给出一个在Python语言中使用PyQt界面库及设计师工具编写界面程序的入门例子。

例子说明

该例运行界面如下图所示,包括了常用软件界面必备的几个区域部分:菜单栏、工具栏、状态栏及主窗口显示区域,其中,主窗口显示区域使用水平及垂直分割条控件以左一右二的形式分为了三个窗口部分。

工具栏的显示样式可通过菜单设置为“仅显示图标”或“显示图标和文字”两种样式。另外,通过点击工具栏上窗口视图的下拉菜单可设置右面两个窗口的显示或隐藏状态。

下面看下怎么在设计师(Qt Designer)中来实现这个界面程序的设计。

前提条件

假定你使用的IDE是PyCharm,并且已经配置了如下图所示三个常用工具:

具体的配置方法可参考前面的文章:

这三个常用工具都可以在PyCharm的右键菜单中操作,功能简要说明如下:

Qt Designer:可以在PyCharm中开发环境中快速打开设计师(Qt Designer)工具。

PyUIC:将Qt Designer设计的“.ui”界面文件转换成“.py”文件。

Rcc2Py:将Qt Designer设计中用到的资源文件“.qrc”文件转换成“.py”文件。

软件界面使用设计师(Qt Designer)工具的设计过程

1、新建UI文件

打开设计师,新建一个窗体,模板选择为Main Window,如下图所示,并保存为“Main.ui”文件:

2、新建资源文件

在设计师的资源浏览器中新建一个资源文件保存名称为“MyRes.qrc”,将本例界面中用到的图标等资源文件添加到该文件中,如下图所示(前缀设置为空,图标文件保存在当前程序所在目录的img子文件夹下):

3、在动作编辑器编辑各种action

菜单栏、工具栏上的大部分功能都可以通过动作编辑器完成,可以设置每个action的名称、文本、快捷键、是否可选、工具提示等信息,本例中动作编辑完成后如下图所示:

4、菜单栏设计

通过拖放前面创建的action,可在设计师中完成菜单栏的设计,对于本例,设计完成后文件、选项-工具栏样式及选项-窗口视图菜单项分别如下图所示:

5、工具栏设计

同菜单栏设计过程类似通过拖放前面创建的action完成工具栏的设计,本例中工具栏编辑完成后如下图所示:

需要说明的是,本例工具栏还包括一个带下拉菜单的QToolButton控件,在设计师中不能直接将其放到工具栏区域中,后面需在代码中手动创建该控件。

6、状态栏设计

本例状态栏比较简单,只在状态栏中添加一个QLabel控件作一个简单的信息显示即可。同样,在设计师中不能直接将QLabel控件放到状态栏区域中,后面需在代码中手动创建该控件。

7、主显示区域设计

本例中,主显示区域分为左一右二的三个窗口,使用分割条进行布局。为简单起见,本例使用三个“Plain Text Edit”控件作为显示窗口。在设计师中拖放三个状态栏“Plain Text Edit”控件到主窗口区域中,分别命名为leftWnd、rightWnd1和rightWnd2,同时,在属性编辑器设置三个控件的plainText属性分别为左窗口、右窗口1、右窗口2。然后选中rightWnd1和rightWnd2,在设计师中选择“使用分裂器垂直布局”,完成右面两个窗口的垂直布局。然后再选中这个垂直布局和leftWnd窗口,在设计师中选择“使用分裂器水平布局”,这样使用水平分割条完成了整个界面左、右两部分的水平布局。如下图所示:

8、信号/槽的设计

在设计师的信号/槽编辑器中可完成信号与槽函数的关联,对于本例,将动作actExit关联到主窗口的关闭事件中,这样,在工具栏中点击退出按钮时,可退出该程序,如下图所示:

至此,在设计师中完成了整个界面的设计,保存文件。该界面中涉及到的所有界面对象元素如下图所示:

界面文件至Python文件的转换

在设计师中界面设计完成后,我们得到了两个文件:“Main.ui”界面文件和“MyRes.qrc”资源文件,需将这两个文件转换为Python能够识别的文件,这就用到了前面提到的已经集成好的两个工具“PyUIC”和“Rcc2Py”。

在PyCharm开发环境中,选中这两个文件,在右键菜单中分别选择“PyQt4-->PyUIC”和“PyQt4-->Rcc2Py”即可完成这两个文件的转换。

转换完成后,生成了两个新的文件,分别为界面文件“Ui_Main.py”和资源文件“MyRes_rc.py”。

其中,“Ui_Main.py”文件中主要定义了一个界面布局类“Ui_MainWindow”,在该类中,会自动导入“MyRes_rc.py”的内容。

主程序“Main.py”的编写

在PyCharm开发环境中新建一个Python文件“Main.py”。其调用界面文件的主要思路为:

定义一个类MainWindow,继承自QMainWindow和Ui_MainWindow类,在该类中实现设计师中不能完成的界面元素,如本例中工具栏上的下拉菜单按钮和状态栏上的label控件等,实现信号与槽函数的关联,完成槽函数的实现。

MainWindow类的具体实现代码如下图所示:

对上述代码说明如下:

第16-45行,类的初始化函数。

第20-36行,添加设计师中不能完成的界面元素,详细请参考注释。

第38-40行,实现两个动作与槽函数的关联,用以设置工具栏的样式和右边两个窗口是否可见。

第42-45行,设置主分割条mainSplitter的左右两边的比例,并将其设置为主窗口的中心部件。

第47-57行,两个槽函数的具体实现。

程序的完整测试代码如下图所示:

程序运行后,即可看到本文开头的提到的界面运行图。

备注

本例开发环境配置:Python2.7 + PyQt4。

如果你觉得这篇文章对你有用的话,抖抖小手点个赞吧。

看到此处说明本文对你还是有帮助的,关于“Python+PyQt架构:使用设计师编写界面程序入门示例”留言是大家的经验之谈相信也会对你有益,推荐继续阅读下面的相关内容,与本文相关度极高!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
Python+PyQt架构:使用QPainter绘图及坐标变换示例

Python+PyQt架构:使用QPainter绘图及坐标变换示例

矩形框,坐标,图形,例子,函数,所示,平移,区域,功能,界面,本例,状态,过程,主界面,坐标变换,如下图,窗口类,缩放,代码,内容,图元,基础,定义,架构,测试代码,程序,设计,运行,主窗口,这种方式

2011-11-02 #短篇故事

Python+PyQt架构:Graphics View快速绘图入门及坐标系统示例

Python+PyQt架构:Graphics View快速绘图入门及坐标系统示例

坐标,视图,图形,场景,架构,事件,图元,所示,状态栏,鼠标,中心,例子,函数,界面,矩形框,移动,主窗口,如下图,位置,原点,大小,控件,过程,设计,可选择,中实,信号,功能,圆形,当鼠标

2008-05-19 #小故事

Python+PyQt架构:实现一个简单的小工具之颜色拾取器

Python+PyQt架构:实现一个简单的小工具之颜色拾取器

函数,颜色,鼠标,代码,C++,信息,定时器,界面,功能,图像,例子,实时,所示,程序,类型,位置信息,如下图,颜色值,框架结构,位置,像素点,总体,布局,所在位置,所在区域,指示,控件,核心,简要,问题

2012-12-08 #经典故事

PyQt模型/视图结构编程示例:QStringListModel的用法

PyQt模型/视图结构编程示例:QStringListModel的用法

视图,组件,函数,界面,内容,C++,编辑,所示,数据,模型,结构,代码,一行,字符串,如下图,设计,与界,前提,例子,信息,信号,参数,架构,本例,测试代码,状态,示例,程序,语言,设计师

2008-07-08 #故事阅读

总师眼中歼20:经历过最艰难隐身 冒险修改架构 终于修成正果

总师眼中歼20:经历过最艰难隐身 冒险修改架构 终于修成正果

杨伟,总师,航电,架构,军令状,性能,战机,飞机,以美,发现了,后果,开放式,节点,时候,方面,升级,设计,为目标,总设计师,系统架构,研发,无私奉献,科研人员,成都飞机设计研究所,科技发展,航空电子,举动,个人,任务,产物

2012-08-01 #长篇故事

Python自动化收取蚂蚁森林能量 不错过暗恋的她!

Python自动化收取蚂蚁森林能量 不错过暗恋的她!

好友,能量,个参数,代码,森林,元素,蚂蚁,主页,能量球,位置,手机,所在,支付宝,方式,点击进入,信息,参数,客户端,步骤,界面,检测,测试,可以找到,方法是,然后再,自动化测试,首先需要,如图所示,图中,若大

2020-09-26 #短篇故事

从用户界面设计师过渡到体验设计师

从用户界面设计师过渡到体验设计师

用户,设计,设计师,工具,产品,战略,角色,交互设计,用户体验,故事,流程,层面,策略,行为,软件,体验设计,原型,地图,平台,界面,项目,用户研究,分界线,商业,旅程,工作,产品经理,业务,书籍,任务

2018-08-15 #故事会

信达雅的交互界面设计法 为游戏注入故事思维 2019国际体验设计大会

信达雅的交互界面设计法 为游戏注入故事思维 2019国际体验设计大会

设计,界面,玩家,故事,内核,思维,案例,网易游戏,界面设计,工作坊,情绪,本质,游戏,需求,分组,拆解,信达,千山,妙笔,灵魂,设计师,阴阳师,传统文化,设计目标,引人入胜,拆分,皮相,好的,世界,乐趣

2020-07-05 #故事会在线阅读