我做Python窗口界面编程时,经常使用PyQt进行设计。这里简单叙述一下使用PyQt5制作一个简单的图形界面的流程

PyQt的简介以及开发环境的搭建在此不多赘述。

1.       打开Qt Designer,新建一个Dialog Without Buttons

2.       从左侧的Widget Box拖入一个Label,一个Text和一个Button

3.       双击控件可以改变其上的文本

4.       保存文件,命名为test.ui

5.       使用pyuic5将.ui文件转换为.py文件。方法:打开命令提示符,进入test.ui所在文件目录,输入命令pyuic5 test.ui –o test.py并执行(如果使用的是pyqt4的话,前面输入的就应当是pyuic4),执行完成后会看到一个python脚本文件test.py

6.       生成完整的GUI程序。打开生成的test.py文件,此时如果直接运行是不能生成GUI界面的,需要添加一些代码才能运行。首先在文件开头添加“import sys”。然后在文件末尾添加主函数:

if __name__=='__main__':

app=QtWidgets.QApplication(sys.argv)

Form=QtWidgets.QWidget()

ui=Ui_Dialog()

ui.setupUi(Form)

Form.show()

sys.exit(app.exec_())

我在做PyQt生成第一个界面的时候,借鉴了PyQt4的GUI添加方法http://jingyan.baidu.com/article/a3761b2ba2b8581576f9aa98.html,但是在测试时发现PyQt4的要写的代码与PyQt5在一处有所不同。上面百度经验的网站上写的需要添加的代码有一行是“Form=QtGui.QWidget()”。但据我测试,使用pyqt5的话那一行代码应该改为“Form=QtWidgets.QWidget()”。

添加完成后再运行就可以看到GUI界面了,按照之前所写的,GUI界面上应该有一Label,一个Line Edit和一个Button。

这样就完成了一个简单的Python GUI程序了。

7.       添加事件。添加的内容是按下按钮后,Label上的文本变成Lie Edit里面输入的内容。首先在Ui_Dialog类的SetupUi方法中添加代码“self.pushButton.clicked.connect(self.A)”,意思是按下按钮后执行Ui_Dialog类的方法“A”。然后在Ui_Dialog中添加方法“A”:

def A(self,Dialog):

try:

EditText=self.lineEdit.text()

_translate = QtCore.QCoreApplication.translate

self.label.setText(_translate("Dialog", EditText))

except:

print(sys.exc_info())

运行程序的效果是:在Line Edit上输入一些内容,按下按钮,Label上的文本就会变为LineEdit上输入的内容。

另外,编写Python的GUI代码时,最好每个函数都加入try-except异常处理。因为如果GUI程序抛出未经处理的异常(比如NameError),往往并不会在控制台上显示“Traceback…File X,Line X …XXXError…”的错误信息,而是图形界面卡死弹出Pythonw.exe已停止工作的消息,这样非常不利于调试。

8.       最后,我在学PyQt时经常上的网站:

http://zetcode.com/gui/pyqt5/

这个网站虽然是全英文的,但是内容还是很详细的

另外,PyQt5的安装包里面有自带教程,里面详细介绍了很多的控件类及其使用方法,路径为<</span>安装包路径>\doc\html

http://blog.sina.com.cn/s/blog_15d207b300102xi5t.html

使用PyQt5编写一个简单的GUI程序(pyside 有 pyside-uic 把ui文件转成py文件,pyside-rcc 把qrc文件转成 py文件导入就行了)的更多相关文章

  1. 编写一个简单的C++程序

    编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

  2. 用C语言编写一个简单的词法分析程序

    问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...

  3. Java入门篇(一)——如何编写一个简单的Java程序

    最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...

  4. 编写一个简单的 JDBC 程序

    连接数据库的步骤: 1.注册驱动(只做一次) 2.建立连接(Connection) 3.创建执行SQL的语句(Statement) 4.执行语句 5.处理执行结果(ResultSet) 6.释放资源 ...

  5. javascript编写一个简单的编译器(理解抽象语法树AST)

    javascript编写一个简单的编译器(理解抽象语法树AST) 编译器 是一种接收一段代码,然后把它转成一些其他一种机制.我们现在来做一个在一张纸上画出一条线,那么我们画出一条线需要定义的条件如下: ...

  6. 如何在linux下编写一个简单的Shell脚本程序

    在了解了linux终端和其搭配的基本Shell(默认为bash)的基础下,我们就可以在终端中用vi/vim编辑器编写一个shell的脚本程序了 Shell既为一种命令解释解释工具,又是一种脚本编程语言 ...

  7. 使用CEF(二)— 基于VS2019编写一个简单CEF样例

    使用CEF(二)- 基于VS2019编写一个简单CEF样例 在这一节中,本人将会在Windows下使用VS2019创建一个空白的C++Windows Desktop Application项目,逐步进 ...

  8. 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小

    原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...

  9. 利用JSP编程技术实现一个简单的购物车程序

    实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...

随机推荐

  1. 【ORACLE】spfile失落的处理

    ************************************************************************ ****原文:blog.csdn.net/clark_ ...

  2. 【24.58%】【BZOJ 1001】狼抓兔子

    Time Limit: 15 Sec Memory Limit: 162 MB Submit: 19227 Solved: 4726 [Submit][Status][Discuss] Descrip ...

  3. Dictionary实现(收藏的)

    源文献:https://www.cnblogs.com/InCerry/p/10325290.html 对于C#中的Dictionary类相信大家都不陌生,这是一个Collection(集合)类型,可 ...

  4. JSON排序

    //排序之前 var arrs=[{"PageID":"1"},{"PageID":"10"},{"PageI ...

  5. JPEG图像扩展信息读取和修改

    最近,项目需要使用jpg图像信息被写入(非水印),经过研究发现,Android已封装的读者jpg图片扩展信息api(ExifInterface). 通讯api住址:http://developer.a ...

  6. YII2.0多条件查询升级版

    $query = self::find()->andFilterWhere(['v_type' => $v_type])->andFilterWhere(['like', 'a_na ...

  7. Scala Control Structures

    Scala之Control Structures 一.前言 前面学习了Scala的Numbers,接着学习Scala的Control Structures(控制结构). 二.Control Struc ...

  8. Scala & IntelliJ IDEA:环境搭建、helloworld

      --------------------- 前言 --------------------- 项目关系,希望用Spark GraphX做数据分析及图像展示,但前提是得回spark:spark是基于 ...

  9. python reversed

    reversed()函数是返回序列seq的反向访问的迭代子.参数可以是列表,元组,字符串,不改变原对象. 例题: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事 ...

  10. 绝对和相对误差(absolute & relative error)

    1. 标量 真实值为 x,测量值为 x0, 绝对误差(absolute error):Δx=x0−x(有单位): 相对误差(relative error):δx=Δxx=x0−xx=x0x−1(是一个 ...