PyQt4转PyQt5心得

article/2025/9/9 12:49:22

Python2.6-Python3.6

Error1:

TypeError: qRegisterResourceData(int, str,str, str): argument 2 has unexpected type 'str'

设置pyrrc的外部工具:


重新对qrc生成py文件。

Error2:

NameError: name 'codecs' is not defined

import codecs删除。

Error3

TypeError: an integer is required (got typestr)

open的第三个参数删除。

Error4:

NameError: name 'unicode' is not defined

Unicode修改为str

Error5:

AttributeError: 'str' object has noattribute 'trimmed'

.trimmed直接去掉即可。

Error6:

TypeError: unhashable type:'QListWidgetItem'

要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key

>>> key = [1, 2, 3]

>>> d[key] = 'a list'

Traceback (most recent call last): File"<stdin>", line 1, in <module>

TypeError: unhashable ty

List不能作为key

item后加入.text(),来获得其选择的选项,再加个Intitem.text()

Error7:图片因为格式问题读取不正确

原程序所采用的方式为以二进制方式直接读取,这种读取方式导致的问题是无法读取jpgjpeg文件。因此直接改变代码结构。

改变如下(1305- LoadFile函数):

原:

#    # Load image:
#     # read data first and store forsaving into label file.
#     self.imageData = read(filename,None)
#     self.labelFile = None
# image = QImage.fromData(self.imageData)

改正为:

else:
   
vis = cv2.imread(filename)
   
image_height, image_width,image_depth = vis.shape
    QIm = cv2.cvtColor(vis,cv2.COLOR_BGR2RGB# opencv
读图片是BGRqt显示要RGB,所以需要转换一下
image = QImage(QIm.data, image_width, image_height,  # 创建QImage格式的图像,并读入图像信息
               image_width * image_depth,
               QImage.Format_RGB888)

Error8:界面进行改变后,无法改变

会生成一个pkl文件,直接把这个文件删除即可。

Error9:

FileNotFoundError: [Errno 2] No such fileor directory: 'None\\setting_panel.xml'

单独打开一张图片时,难以保存,原因是有个默认的选项。

Error10:如何打包成exe文件

需要用到pyinstaller工具

在pycharm中设置pyinstaller外部工具(settings-tools-external tool):


用pyinstaller外部工具对Py文件使用,即会生成一个libs和build文件夹,只需要libs文件夹里的exe文件。

之后需要在自己安装的pyqt里找到这样的几个文件,放在platforms文件夹里。

之后就可以将exe文件和该platforms文件放在同一个文件夹即可,即可使用。
注意:设计的软件过程中会自动打开cmd,可以监视软件后台的代码运行情况。

Error11:

FileNotFoundError: [Errno 2] No such fileor directory: 'None\\remote_settings.xml'

解决方式1:在setting里设置好默认的存放地址

解决方式2

Error12:

TypeError: write() argument must be str,not bytes

Error13:

ModuleNotFoundError: No module named'libs.pascalVocIO'

Error14:

TypeError: must be str, not int

一般都是print的时候出错,特别是在str+int 形式的输出时会报这个错。

Pyqt4-Pyqt5

Error1:

RuntimeError: the sip module implements APIv11.0 to v11.3 but the  module requiresAPI v12.4

装了两个版本的PyQt会出现API版本的冲突,只能存在一个版本的PyQt,留下一个PyQt5即可。

Error2:

AttributeError: module 'PyQt5.QtGui' has noattribute 'QDialog'

PyQt4QtGui模块,在PyQt5中被拆分成三个模块:QtGuiQtPrintSupportQtWidgets

QDialog被移植到QtWidegets里。

Error3:

NameError: name 'QWidget' is not defined

NameError: name 'QDialogButtonBox' is notdefined

NameError: name 'QSpinBox' is not defined

NameError: name 'QMainWindow' is not defined

类似的问题都是因为QtGui的拆分,因此需要引用下一句:

from PyQt5.QtWidgetsimport *

Error4:

在引用qdarkstyle时,用到了app.setStyleSheet(qdarkstyle.load_stylesheet(pyside=False))

这句会自动执行PyQt4下的代码,因此当单独存在一个PyQt5时会出错。

解决方式:

修改为:

app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())

Error5:

AttributeError: type object 'QObject' hasno attribute 'connect'

这里涉及一个PyQT4PyQT5的槽函数连接区别的问题:

PyQt4中:

QObject.connect(
     self.display_timer,
     SIGNAL("timeout()"),
     self.info_display)

修改为

self.display_timer.timeout.connect(self.info_display)

PyQT5中将繁琐的QObject.connect槽函数信号连接形式已经废弃了,直接signal.connect(self.function)即可。

Error6:

AttributeError: 'QMouseEvent' object has noattribute 'posF'

posf改为pos

Error7:

lxml.etree.XMLSyntaxError: Document isempty, line 1, column 1

xmltree = ElementTree.parse(self.filepath,parser=parser).getroot()

加载self.flilepath对应的xml文件,用.getroot()函数获得根节点。

#self.loadPascalXMLByFilename(xmlPath) 直接注释

Error8:

AttributeError: type object 'QObject' hasno attribute 'connect'

 QtCore.QObject.connect(self.label_font_size_sl,QtWidgets.SIGNAL("valueChanged(int)"),

                        self.label_font_size_sp,QtWidgets.SLOT("setValue(int)"))

修改为

self.label_font_size_sl.valueChanged.connect(self.label_font_size_sp.setValue)

signal slot不能再写成QObject.connect的形式了。

Error9

AttributeError: 'QListWidget' object has noattribute 'setItemSelected'

self.fileListWidget.setItemSelected(fileWidgetItem,True)

这个错误是在检测,直接去掉即可。

Error10:

AttributeError: 'QFileDialog' object has noattribute 'setConfirmOverwrite'

直接去掉了这句代码。

Error11:无法显示图片

文件框获取的的路径不对,qfile.open…这个函数返回了两个参数,不仅仅只有一个。

Error12:

TypeError: Can't convert 'NoneType' objectto str implicitly

这个错误出现在分类的文件夹打开的过程中。

这个的解决了,主要是先设置的模式,我们先设置检测,就没有问题了。

Error13

打开单张照片后,无法正常打开文件夹了。

原因,一个print()函数的输出nonestr相加,这样是不对的,将+号变成,即可。

Error14:

先打开一个dir,再打开一个单张图会出现以下的错误:

在重置函数中清filelist的表单。

Error15

当第一次打开本软件的时候,单独打开一张图时,由于本软件有默认的存储路径,因此需要先添加默认路径。

Error16:

AttributeError: 'QWheelEvent' object has noattribute 'orientation'

Error17:

AttributeError: 'QWheelEvent' object has noattribute 'delta'

Delta----angleDelta

Error18:

滚筒有问题,处理方式


Error19:移植的软件出错

先给个默认的路径。

ERROR20

RuntimeError: the sip module implements APIv11.0 to v11.3 but the  module requiresAPI v12.4,版本冲突,在settings的project中重新导入interperater即可。

Error21:

xml.etree.ElementTree.ParseError: notwell-formed (invalid token): line 1, column 1

python3 python2的转码问题:

strbytes:编码encode

Str=’test’

Bytes=str.encode(encoding=’utf-8’)

bytesstr:解码decode

Bytes.decode()

22os.mkidr/../..

注意这样的创建文件目录时会出错,因为不能跳级创建,当上级目录页不存在时,是无法创建的。

此时需要使用os.makedirs(../../)

23

Pyqt如何弹出提示框:


24AttributeError:'QListWidget' object has no attribute 'setItemSelected'

self.labelList.setItemSelected(self.shapesToItems[shape], True)#设置指定shape对应的item

改为

self.shapesToItems[shape].setSelected(True)

25

TypeError: unhashable type:'QListWidgetItem'

class HashableQListWidgetItem(QListWidgetItem):

    def __init__(
self, *args):
       
super(HashableQListWidgetItem,self).__init__(*args)

    def __hash__(
self):
       
#
重写了魔方方法
        return hash(id(self))
   
#
返回可以hash的类型,id其实是该item对应的id

#这样改写即可

 





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

相关文章

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…

用apktool和dex2jar反编译

一&#xff0c;利用apktool反编译 1&#xff0c;首先在 http://code.google.com/p/android-apktool/downloads/list 下载两个文件&#xff1a;apktool1.4.3.tar.bz2 和apktool-install-windows-r04-brut1.tar.bz2 2&#xff0c;解压第一个文件得到apktool1.4.3.jar 放到c:…