微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试将 SCN_MODIFIED 与 pyqt6 一起使用会生成 TypeError 崩溃

如何解决尝试将 SCN_MODIFIED 与 pyqt6 一起使用会生成 TypeError 崩溃

我有一个简单的编辑器,我正在尝试将其移植到 PyQt6,但是遇到了文档修改消息的问题。它在 PyQt5 中运行良好,但在 PyQt6 中生成 'TypeError: unable to convert a QVariant back to a Python object' 消息。

# from PyQt6 import QtWidgets
# from PyQt6.Qsci import QsciScintilla
from PyQt5 import QtWidgets
from PyQt5.Qsci import QsciScintilla


class SimplePythonEditor(QsciScintilla):
    def __init__(self,parent=None):
        super().__init__(parent)
        self.SCN_MODIFIED.connect(self._modified)


    # The current documentation https://www.scintilla.org/ScintillaDoc.html#SCN_MODIFIED shows a slightly different set of arguments and order.
    # def _modified(self,modificationType,position,length,linesAdded,text,line,foldLevelNow,foldLevelPrev):
    def _modified(self,foldLevelPrev,token,annotationLinesAdded):        
        print(f'_modified {modificationType=},{position=},{length=},{linesAdded=},{text=},{line=},{foldLevelNow=},{foldLevelPrev=},{token=},{annotationLinesAdded=}')


if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    editor = SimplePythonEditor()
    editor.show()
    app.exec()

运行代码并在 PyQt5 中输入 abc 生成以下输出

_modified modificationType=1048576,position=0,length=1,linesAdded=0,text=None,line=0,foldLevelNow=0,foldLevelPrev=0,token=0,annotationLinesAdded=0
_modified modificationType=1040,annotationLinesAdded=0
_modified modificationType=8209,text=b'a',annotationLinesAdded=0
_modified modificationType=1048576,position=1,annotationLinesAdded=0
_modified modificationType=17,text=b'b',position=2,text=b'c',annotationLinesAdded=0

我在 linux 上使用我的软件包版本

PyQt5==5.15.4
PyQt5-Qt5==5.15.2
QScintilla==2.13.0
PyQt6==6.1.1
PyQt6-Qt6==6.1.2
PyQt6-QScintilla==2.13.0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。