使用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 ...
随机推荐
- RGB值得计算公式
三原色分别为:红(Red).绿(Green).蓝(Blue). 颜色值=(Red)+(Green*256)+(Blue*256*256) //由三原色值合成颜色整数值 function ColorFr ...
- Java网络编程注意事项1
网络编程的基础知识 什么是计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备通信线路互连成一个规模大.功能强的网络系统. 计算机网络主要能做些下面功能: 1)资源共享 2)信息传输与集中处理 ...
- jQuery.noop
一个空函数 当你仅仅想要传递一个空函数的时候,就用他吧.这对一些插件作者很有用,当插件提供了一个可选的回调函数接口,那么如果调用的时候没有传递这个回调函数,就用jQuery.noop来代替执行.
- Modbus TCP 示例报文
调试modbus tcp 整理百度文库文档如下 <modbus-tcp-报文举例分析> <MODBUSTCP通讯报文> Client request: 19 B2 00 00 ...
- Android中使用ListView实现自适应表格
GridView比ListView更容易实现自适应的表格,但是GridView每个格单元的大小固定,而ListView实现的表格可以自定义每个格单元的大小,但因此实现自适应表格也会复杂些(格单元大小不 ...
- WPF模拟Office2010文件菜单的TabControl模板
原文:WPF模拟Office2010文件菜单的TabControl模板 这是Office2010中的文件菜单点开后的效果.本文我将以强大的WPF(www.itstrike.cn)来实现类似的效果.希望 ...
- 【剑指offer】直扑克
个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想測測自己的手气,看看能不能抽到顺子,假设抽到的话,他决定去买体育彩票,嘿嘿! ! "红心A,黑桃3,小王,大王,方 ...
- C++ string的那些坑,C++ string功能补充(类型互转,分割,合并,瘦身) ,c++ string的内存本质(简单明了的一个测试)
1. size_type find_first_of( const basic_string &str, size_type index = 0 ); 查找在字符串中第一个与str中的某个字符 ...
- Linux之tail命令实时收集[纠正误解]
tail [OPTION]... [FILE]... -c, --bytes=K output the last K bytes; alternatively, use -c + ...
- 利用花生壳对windows server进行远程桌面
花生壳内网穿透 http://service.oray.com/question/1824.html windows server "允许远程协助连接这台计算机" 需要在服务器管理 ...