PyQt4入门

article/2025/9/9 12:49:21

首先上个图,看看PyQt运行长什么样:

这里写图片描述

图片来自:
http://static.oschina.net/uploads/space/2013/0423/083239_08UQ_5189.jpg

PyQt是一个Python GUI库。
PyQt4兼容Python 2.x和Python 3.x,PyQt5只能用于Python 3.x。
这里以PyQt4为例。

一、安装PyQt4:

  • Ubuntu:sudo apt-get install python-qt4或者sudo pip install pyqt
  • Windows:上SourceForge下载exe吧,最近版本为2015年的4.11.4,默认安装路径为..\Python27\Lib\site-packages\PyQt4

从PyQt 4.12起,官网不再提供安装包,需要自己根据平台编译,有点坑爹。

二、学习之路:

  • 第一个PyQt程序:Hello World
  • PyQt入门
  • PyQt基本操作
    PyQt4 精彩实例分析
  • PyQt4入门指南 PDF中文版
  • 结合Qt Designer的第一个PyQt程序:使用PyQt来编写第一个Python GUI程序,程序designer.exe在PyQt4路径下。

控件:

  • PyQt4中文教程(翻译版),原版有图
  • PyQt5应用与实践

  • PyQt对话框:

QtGui.QMessageBox.information(self,"Pyqt","Information" )response=QtGui.QMessageBox.warning(self,"PyQT","Warning",QtGui.QMessageBox.Yes,QtGui.QMessageBox.No)response=QtGui.QMessageBox.question(self,"PyQt","Question",QtGui.QMessageBox.Yes,QtGui.QMessageBox.No,QtGui.QMessageBox.Cancel )if response==QtGui.QMessageBox.No:#do somthing
  • 点击弹出子窗口

  • 自定义ListWidget:适用于数据量少

  • 自定义ListView,适用于数据量较大:MVC模型

  • PyQt4仿微信Windows客户端界面

事件:

  • PyQt4.5 引入了一个新的信号(Signal)和槽(Slot)的概念。新版的监听事件一般这样写:
QtCore.QObject.connect(button,QtCore.SIGNAL('clicked()'),self.onClicked)

旧版的监听事件一般这样写:

button.clicked.connect(self.onClicked)
  • PyQt4 信号和槽详解

UI线程与子线程:

如果在UI线程(主线程)进行耗时操作,如下载网络文件等,就会造成堵塞UI线程,表现为界面停止响应。可以通过QThread类来解决这个问题。

  • PyQt4–QThread实现界面与算法分离
  • PyQt4–QThread实现界面与算法的分离–2
  • Updating GUI elements in MultiThreaded PyQT

三、发布:

  • 使用PyInstaller打包成exe文件

首先,pip install pyinstaller
然后,进入项目所在文件夹,运行命令:pyinstaller -w -F -i myapp.ico -n myapp myapp.py
其中:
-w, –windowed 表示不显示控制台;
-D, –onedir 表示生成一个目录;
-F, –onefile 表示生成单个exe文件;
-i 指定程序图标文件;
-n 指定程序名字;

启动软件显示Fatal Error时,:
-c, –console 启动软件时显示控制台可以打印出错信息
-d, –debug 输出详细启动信息

参数详细说明

常见问题:

  • PyInstaller won’t load the PyQt’s images to the GUI

包含资源文件(图标、图片)的打包

首先新建一个resources.qrc文件,写入:

<RCC><file>img/app.ico</file><file>img/image1.png</file><file>img/image2.png</file><file>img/image3.png</file></qresource>
</RCC>

这个文件可以在QT Designer的资源浏览器里编辑(增删查改)。

然后运行

pyrcc4 resources.qrc -o resources.py

代码里使用:

import resources.py# Omit code...
self.setWindowIcon(QtGui.QIcon(':/img/app.ico'))

注意冒号是必需的。

包含额外文件(如.ui文件)的打包

简便方法,增加--add-data参数:

pyinstaller --add-data ui/*.ui:ui

较复杂方法,适合写代码构建:

首先,生成spec文件

pyi-makespec options -n app main.py

options跟上面pyinstaller一样

然后修改app.spec文件:

# -*- mode: python -*-block_cipher = Nonea = Analysis(['main.py'],pathex=['G:\\Code\\PycharmProjects\\peach'],binaries=[],datas=[],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)
exe = EXE(pyz,a.scripts,exclude_binaries=True,name='app',debug=True,strip=False,upx=True,console=True )
coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,name='app')
datas=[( '/mygame/sfx/*.mp3', 'sfx' ),( 'src/README.txt', '.' )]

表示将/mygame/sfx/*.mp3文件复制到sfx文件夹下,将 src/README.txt复制到根目录下

最后运行pyinstaller app.spec执行构建

详细可参考Using Spec Files

四、号外:

最后发现有一个跟PyQt差不多的的东西:PySide。
两者都是基于Qt的,语法基本一模一样。
两者的协议不同,PyQt是GPL的,而PySide是LPGL的。
而且PySide的文档感觉Very Good,毕竟是Qt官方维护的。


http://chatgpt.dhexx.cn/article/cXeTHbVu.shtml

相关文章

PyQt4转PyQt5心得

Python2.6-Python3.6 Error1: TypeError: qRegisterResourceData(int, str,str, str): argument 2 has unexpected type str 设置pyrrc的外部工具&#xff1a; 重新对qrc生成py文件。 Error2: NameError: name codecs is not defined 将 import codecs删除。 Error3&…

pyQt4 for mac 安装

因为想跨平台&#xff0c;所以考虑Qt&#xff0c;又想结合脚本的便捷。考虑PyQt 网上搜索了一下&#xff0c;资料挺少的。有的还是以前的资料。 参考这里 http://www.noktec.be/python/how-to-install-pyqt4-on-osx 0&#xff1a;下载安装xcode 1&#xff1a;下载安装Qt htt…

from PyQt4 import QtGui,QtCore出错

from PyQt4 import QtGui,QtCore出错 今天尝试着安装PyQt写界面&#xff0c;官网下载后发现import QtGui出错了&#xff0c;情况如下图&#xff1a; 提示DLL load faied 找了下网上有些人说是某些dll文件丢失了&#xff0c;但我发现都在&#xff1b; 于是我尝试了多种方法后发…

pyqt4安装问题小结(一)

这几天一直在配python图形化程序所需的库&#xff0c;但安装pyqt4的过程很难过。所以记下来回想一下这几天经历了些什么…… 我的环境是windows8.1python2.7 首先 因为在https://riverbankcomputing.com/software/pyqt/download/下载pyqt4现已不支持windows系统二进制程序&a…

pyQt4导入问题:ImportError: No module named PyQt4

一开始&#xff0c;我是同时安装了两个python环境&#xff0c;python2.7和python3.6,之后才安装的pyQt4。 在pycharm中就出现了ImportError: No module named PyQt4。 这个问题应该是两个python环境出现的问题&#xff0c;具体的原因并不清楚。 但是我们可以有如下的解决办法…

PyQt4---QTextBrowser

browser QTextBrowser() #实例化一个textbrowser browser.append(‘sdfsdfds’) #追加内容 browser.setOpenLinks(True) #打开文档内部链接 默认为True browser.setOpenExternalLinks(True) #打开外部链接 默认false 当openlinks设置false时 该选项无效 textbrowser.setSe…

pyqt4安装方法

1.安装python&#xff0c;我使用的是python-2.7.13.msi 。注意&#xff1a;&#xff08;1.我的python是64位&#xff1b;2.需要将python中的安装路径python.exe路径配置到系统环境变量中&#xff09; 2.安装pyqt4&#xff0c;由于有现成的安装包&#xff0c;所以很简单&#x…

PyQt4 - (1) PyQt4简介

关于这个教程 这是一个PyQt4的简单教程&#xff0c;目的就是为了让大家对PyQt4有个初步的了解。 关于PyQt PyQt是一个GUI库&#xff0c;是将Python和Qt结合在一起的产物。而Qt是目前比较成功和强大的GUI库。你可以通过访问www.riverbankcomputing.co.uk了解更…

PyQt4入门教程(1)_PyQt介绍及准备工作

注&#xff1a;文章中译者自己的话将用方括号【】括出。 本节将对PyQt4进行介绍【我还会教大家怎样做好准备工作——开发环境的配置】。本教程的目的是让你可以开始使用PyQt4工具包进行开发&#xff0c;教程中的事例测试在Linux上进行。 关于PyQt4 PyQt4是用来编写有图形界面…

PyQt4安装使用以及pycharm环境配置

根据自己的python版本下载对应的pyqt4离线包&#xff0c;现在连接&#xff1a;下载地址 比如我地python版本是python3.7&#xff0c;我选择PyQt4‑4.11.4‑cp37‑cp37m‑win32.whl 使用命令行pip指令安装离线包&#xff1a; pip install PyQt4‑4.11.4‑cp37‑cp37m‑win32.w…

pageoffice相关问题整理

2019独角兽企业重金招聘Python工程师标准>>> pageoffice 正常使用的条件&#xff1a; 1、服务器上正常注册了pageoffice ; 2、本地访问用的机器安装了office软件 &#xff1b; 3、本地机器安装了pageoffice客户端 posetup &#xff1b; 问题解决方法&#xff1b; 1、…

激活码方式注册的实现原理述

1. 软件授权方式概述 目前&#xff0c;商用软件和共享软件绝大部份都是采用注册码授权的方式来保证软件本身不被盗用&#xff0c;以保证自身的利益。尽管很多常用的许多软件系统的某些版本已经被别人破解&#xff0c;但对于软件特殊行业而言&#xff0c;注册码授权的方式还是一…

【Office激活】学校正版Office已激活成功仍弹出激活窗口

学校正版Office激活问题&#xff1a;已激活成功仍弹出激活窗口 内容大纲 学校正版Office激活问题&#xff1a;已激活成功仍弹出激活窗口一、问题描述二、问题分析三、解决方法1.修改操作路径到相应的Office文件夹下2.查看当前Office的激活Key状态3.卸载多余的Key 四、解决效果 …

PageOffice国产版的授权及离线注册

2021年初开始&#xff0c;pageOffice推出了国产操作系统的客户端版本&#xff0c;现在在国产操作系统上&#xff0c;也可以使用pageOffice实现在线编辑office文档的功能。 很多开发者在集成国产操作系统的成功后&#xff0c;弹出了注册框&#xff0c;但是不知为什么总是不能注…

uos专业版与个人版区别_win+Android /wps办公软件官方专业版,内附激活码!

❈ 软件介绍 Office软件是平常用的最多的软件之一,除了微软的MS Office用户最多的就是国产的WPS了。WPS分为个人版和专业版,WPS个人版虽然免费,但附带了一些广告和推送。不喜欢有广告的小伙伴可以用村长今天分享提供的WPS专业pj版。只需要输入wps专业版序列号即可轻松激…

新电脑自带的office密钥在哪里?

新电脑自带的office密钥在哪里&#xff1f;最近有用户询问这个问题&#xff0c;相信还有些用户不清楚&#xff0c;买的电脑一般都会预装office&#xff0c;那么买电脑送的office激活码在哪里查看呢&#xff1f; 纯净之家-win7纯净版系统_win7 ghost 纯净版 方法一、 1、首先打…

d2j-dex2jar.sh classes.dex 反编译报错

之前用的是dex2jar-2.0.zip&#xff0c;后来又用了dex2jar-2.1.zip&#xff0c;仍然报错。 参考&#xff1a;https://www.jianshu.com/p/55bf5f688e9a 用ultraedit打开classes.dex文件&#xff0c; 将“039”改成“036”&#xff0c;然后正常反编译。

dex2jar 反编译apk 报错 error.zip 的解决

dex2jar 反编译apk 有如下报错&#xff0c;完整报错如图片&#xff1a; Detail Error Information in File .\GtsSettingsTestCases-classes-error.zip Please report this file to http://code.google.com/p/dex2jar/issues/entry if possible. 打开 error.zip&#xff0c;报…

apktool,dex2jar,jd-gui简单使用与实战

前言 最近项目里要实现一个TimePicker&#xff0c;类似于这样的 我一看&#xff0c;瞬间想起了手机上的某APP&#xff0c;他上面就刚好有类似的效果 本来项目时间就有点赶&#xff0c;自己慢慢写这个控件时间上也有点来不及了&#xff0c;而且他又那么的像&#xff0c;于是&am…

d2j-dex2jar之DexException :not support version

近期使用dex2jar反编译apk&#xff0c;遇到报错&#xff0c;这里记录下解决过程。 命令详细错误如下&#xff1a; ./d2j-dex2jar.sh ../classes.dex dex2jar ../classes.dex -> ./classes-dex2jar.jar com.googlecode.d2j.DexException: not support version.at com.googl…