PyQt4转PyQt5心得
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(),来获得其选择的选项,再加个Int(item.text())
Error7:图片因为格式问题读取不正确
原程序所采用的方式为以二进制方式直接读取,这种读取方式导致的问题是无法读取jpg、jpeg文件。因此直接改变代码结构。
改变如下(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读图片是BGR,qt显示要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文件夹里。
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'。
PyQt4的QtGui模块,在PyQt5中被拆分成三个模块:QtGui,QtPrintSupport和QtWidgets。
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'
这里涉及一个PyQT4和PyQT5的槽函数连接区别的问题:
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()函数的输出none与str相加,这样是不对的,将+号变成,即可。
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的转码问题:
由 str转bytes:编码encode
Str=’test’
Bytes=str.encode(encoding=’utf-8’)
由bytes转str:解码decode
Bytes.decode()
22、os.mkidr(/../..)
注意这样的创建文件目录时会出错,因为不能跳级创建,当上级目录页不存在时,是无法创建的。
此时需要使用os.makedirs(../../)
23、
Pyqt如何弹出提示框:
24、AttributeError:'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。
#这样改写即可
PyQt4转PyQt5心得相关推荐
- Python培训分享:PyQT是什么?PyQt4和PyQt5的区别是什么?
今天小编为大家介绍的课程是关于Python培训方面的教程,主要讲的是PyQT是什么?PyQt4和PyQt5的区别是什么?来看看下面的详细介绍吧. Python培训分享:PyQT是什么?PyQt4和Py ...
- VOC数据集图片标注工具labelImg简介、安装、使用方法详细攻略(windows) PyQt4、PyQt5
参考文章1:labelImg:图片标注工具之labelImg的简介.安装.使用方法详细攻略 参考文章2:LabelImg labelImg的安装 用gitbash打开,运行git clone http ...
- 第一次学习使用Pyqt5心得和体会(UI可以生成py文件,UI和业务逻辑最好分开,即UI生成py后,再写一个main.py来放置业务逻辑)
1. pip install PyQt5 2.python 3.5以上版本安装成功后还需安装pyqt5-tools pip install pyqt5-tools 可能会多出一些包 3. 直接输入de ...
- PyQt:成功解决PyQt4升级到PyQt5改变的函数或方法
PyQt:成功解决PyQt4升级到PyQt5改变的函数或方法 目录 因版本升级而改变的一些方法或函数 1.Exception "unhandled AttributeError" ...
- PyQt 5.4参考指南 ---- PyQt5和PyQt4之间的差异
欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/in ...
- PyQt5简介及demo
PyQt5说明 pyqt5是一套Python绑定Digia QT5应用的框架.它可用于Python 2和3.本教程使用Python 3.Qt库是最强大的GUI库之一.pyqt5的官方网站http:// ...
- 成功解决 ModuleNotFoundError: No module named ‘PyQt5.sip‘
成功解决 ModuleNotFoundError: No module named 'PyQt5.sip' 目录 解决问题 解决思路 解决方法 T1.正确的版本组合 解决问题 ModuleNotFou ...
- python PyQt5中文教程☞【第一节】PyQt5简介
引用文章:http://code.py40.com/pyqt5/ 文章目录 PyQt5说明 PyQt4和PyQt5的区别 PyQt5说明 pyqt5是一套Python绑定Digia QT5应用的框架. ...
- 【pyqt5学习】——tablewidget控件学习
目录 1.Table Widget 1.QTableWidget不能在mainwindow中随主窗口的大小变化? 2.将表格变为禁止编辑: 3.设置表格为整行选择 4.单个选中和多个选中的设置: 5. ...
- pyqt5示例_木辛老师的编程课堂:Python和Qt第一讲之初识PyQt5
让我们初步认识一下PyQt5,了解一下它能给我们带来的强大功能吧 请点击右上角"关注"按钮关注我们哟:跟着木辛老师学习Python编程知识,变身快乐的编程达人吧~ PyQt简介 在 ...
最新文章
- JVM NativeMemoryTracking 分析堆外内存泄露
- 从IBM SVF看传统存储改造的三大要点:软件定义、容量与速度
- 深度学习100例 | 第51天-目标检测算法(YOLOv5)(入门篇)
- vue 订单支付15分钟倒计时
- H5新增API_geoLocation
- Android fragment 页面,[38→100]一个常规的Android页面模型:NetFragment
- EF架构~了解一下,ADO.NET Entity Framework
- pymavlink 源码剖析(二)之生成代码
- 下单延迟10s撤单性能测试
- Mysql表的过滤查询
- tp3.2 执行原生sql
- 第二节 数值、字符与字符串
- BZOJ2732[HNOI2012] 射箭
- limcon.v3.60_uk 英国\
- liinux下安装jdk
- Unveiling causal interactions in complex systems(揭示复杂系统中的因果交互作用)
- 基于 Verilog 的经典数字电路设计(1)加法器
- hellojs使用 推特登录/api nuxt vue
- ln -s 命令详解
- 为什么你学过Java却忘光了——记第一次助教同学见面会,java开发面试笔试题