• 4105阅读
  • 2回复

解决第10章所有示例程序对PyQt5+Python3兼容性问题 [复制链接]

上一主题 下一主题
离线orpinex
 

只看楼主 倒序阅读 楼主  发表于: 2017-11-22
解决第10章所有示例程序对PyQt5+Python3兼容性问题,本章的主要内容是事件、剪贴板和缩放

这章的内容不多,只有十几页,但是对于event的顺序、继承一旦展开了讲,问题还是有很多的,比如各种event的继承关系以及事件的处理顺序等,尤其是在drag 和 drop 的自定义组件部分这种问题表现的更加突出。原书中还有一个把文本和二进制一起写道一个二进制的数据流的句子,这个句子在PyQt 5中不能运行。对于剪贴板的类,Qt 4和Qt 5 也进行了更改,light()函数也改成了lighter() (QColor)。

1、一个展示PyQt5相关事件的程序:




2、PyQt 5 剪贴板操作文本、图像、MIME数据(包括HTML)的示例程序:




3、Drag & Drop 的简单实例程序:




4、自定义 Drag & Drop 组件示例程序:




5、课后习题答案,大部分内容同4,修改了一些dragevent中的策略,并对drag和drop进行了更深层次的思考。

ch_10_events.rar (49 K) 下载次数:56
离线xcontext

只看该作者 1楼 发表于: 2017-12-03
学习了
离线mhy3477

只看该作者 2楼 发表于: 2024-05-20
原书里面的 QTimer.singleShot(5000,self.message.clear)
报错显示:


QTimer.singleShot(5000,self.message.clear)AttributeError: 'str' object has no attribute 'clear'      ? self.message 里没有clear 这个属性吗?

另外 如果self.message = str # self.message = str 为什么不能识别成字符串类型?  
    if self.message:
            painter.drawText(self.rect(),
                              Qt.AlignBottom|Qt.AlignHCenter,
                              self.message)      # 这里的self.message 就会报错如下:

self.message)
TypeError: arguments did not match any overloaded call:
  drawText(self, Union[QPointF, QPoint], str): argument 1 has unexpected type 'QRect'
  drawText(self, QRectF, int, str): argument 1 has unexpected type 'QRect'
  drawText(self, QRect, int, str): argument 3 has unexpected type 'type'
  drawText(self, QRectF, str, option: QTextOption = QTextOption()): argument 1
has unexpected type 'QRect'
  drawText(self, QPoint, str): argument 1 has unexpected type 'QRect'
  drawText(self, int, int, int, int, int, str): argument 1 has unexpected type
'QRect'
  drawText(self, int, int, str): argument 1 has unexpected type 'QRect'


定义成下面的单引号  才不会出现上面的错误,这是为啥? 高手请不吝赐教,谢谢!
        self.message = ''
快速回复
限100 字节
 
上一个 下一个