使用PyQt5编写一个简单的GUI程序(pyside 有 pyside-uic 把ui文件转成py文件,pyside-rcc 把qrc文件转成 py文件导入就行了)
我做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文件导入就行了)的更多相关文章
- 编写一个简单的C++程序
编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...
- 用C语言编写一个简单的词法分析程序
问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...
- Java入门篇(一)——如何编写一个简单的Java程序
最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...
- 编写一个简单的 JDBC 程序
连接数据库的步骤: 1.注册驱动(只做一次) 2.建立连接(Connection) 3.创建执行SQL的语句(Statement) 4.执行语句 5.处理执行结果(ResultSet) 6.释放资源 ...
- javascript编写一个简单的编译器(理解抽象语法树AST)
javascript编写一个简单的编译器(理解抽象语法树AST) 编译器 是一种接收一段代码,然后把它转成一些其他一种机制.我们现在来做一个在一张纸上画出一条线,那么我们画出一条线需要定义的条件如下: ...
- 如何在linux下编写一个简单的Shell脚本程序
在了解了linux终端和其搭配的基本Shell(默认为bash)的基础下,我们就可以在终端中用vi/vim编辑器编写一个shell的脚本程序了 Shell既为一种命令解释解释工具,又是一种脚本编程语言 ...
- 使用CEF(二)— 基于VS2019编写一个简单CEF样例
使用CEF(二)- 基于VS2019编写一个简单CEF样例 在这一节中,本人将会在Windows下使用VS2019创建一个空白的C++Windows Desktop Application项目,逐步进 ...
- 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小
原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...
- 利用JSP编程技术实现一个简单的购物车程序
实验二 JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...
随机推荐
- callback回调函数理解 相当于this指针
1.callback函数在微软的官方手册中是这样定义callback函数的:“callback函数是由应用程序定义而由操作系统调用的函数”. 凡是由用户设计而却由windows系统调用的函数,统称 ...
- ServletContextListener和ContextLoaderListener的区别
ServletContext 被 Servlet 程序用来与 Web 容器通信.例如写日志,转发请求.每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享.因为Context可 ...
- Notice: Undefined index: user in D:\phpStudy\WWW\js\ls\lsmc\php\add.php on line 9
原文:Notice: Undefined index: user in D:\phpStudy\WWW\js\ls\lsmc\php\add.php on line 9 (初用数据库(mysql)做用 ...
- Python 动图、动画制作 —— moviepy、matplotlib.animation
进入命令行界面(windows ⇒ cmd),下载安装,pip install moviepy 0. figure 的成员函数 # 创建 figure fig, ax = plt.subplots() ...
- android网络开源框架volley(五岁以下儿童)——volley一些细节
最近的一次volley整理出下一个.我以前没有再次遭遇了一些小问题,在该记录: 1.HttpUrlConnection DELETE 信息不能加入body问题:java.net.ProtocolExc ...
- POJ 1328 Radar Installation(经典贪婪)
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 54143 Accepted: 12 ...
- 使用xtrabackup实现MySQL主从复制
环境描写叙述 主从环境 项目 Master Slave OS版本号 SuSE 11sp1 x86_64 SuSE 11sp1 x86_64 MySQL版本号 官方版本号5.5.37 官方版本号5.5. ...
- c# 守护进程,WPF程序自守护
原文:c# 守护进程,WPF程序自守护 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/lwwl12/article/details/79035246 如何 ...
- VUE在开发环境下实现跨域
1. 跨域设置 VUE项目的 config文件夹下index.js文件中修改 dev: proxyTable中的内容(默认是没有内容的): 添加内容: '/list': { target: 'http ...
- typescript Json Convert
关键代码 this.data={}; // json string this.dataStr=JSON.stringify(this.data); // json object this.conver ...