PyCharm无法调试Qt5(PySide2)代码-错误的'Shiboken.ObjectType'对象不可迭代

我对Python控制台应用程序有一些经验,现在尝试从Qt for Python(Qt 5.12,PySide2)开始。实际上,我正在尝试一些基础教程来了解其工作原理。

因此,我创建了非常简单的 view.qml

import QtQuick 2.0
import QtQuick.Controls 2.13

ApplicationWindow {
    visible: true

    Button {
        id: button
        text: qsTr("ClickOnme")
    }

    Connections {
        target: button
        onClicked: con.say_hello()
    }
}

并具有以下python代码可以使用它:

from PySide2.QtCore import QObject,Slot
from PySide2.QtGui import QGuiApplication
from PySide2.QtQml import qqmlApplicationEngine

class Bridge(QObject):
    @Slot()
    def say_hello(context):
        print("Button clicked,Hello!",context)

app = QGuiApplication([])
engine = qqmlApplicationEngine()
bridge = Bridge()

context = engine.rootContext()
context.setContextProperty("con",bridge)
engine.load("view.qml")

engine.rootObjects()
exit(app.exec_())

当我简单地运行它时,它可以正常工作-即,我看到带有按钮的应用程序窗口。我可能单击一个按钮,然后看到控制台中打印的消息。 但是,当我尝试调试它时,它会立即在第class Bridge(QObject):行停止,但有以下异常: <class 'tuple'>: (<class 'TypeError'>,TypeError("'Shiboken.ObjectType' object is not iterable"),<traceback object at 0x7fe195b23680>)

我在Qt Creator中进行了相同的尝试-正常工作,而不是运行和调试问题(较小的问题-Qt Creator控制台中的消息仅在应用程序终止后出现)。但是我更喜欢PyCharm,所以想了解如何解决此问题并继续在Qt中使用PyCharm。 如果重要的话-我正在运行ArchLinux。

xiekaixu 回答:PyCharm无法调试Qt5(PySide2)代码-错误的'Shiboken.ObjectType'对象不可迭代

几天前,Arch Linux将其Python版本更新为3.8,但PySide2尚不具有兼容版本,从而引起您指出的错误。正如他们在这份报告PYSIDE-1140中指出的那样:

  

我保持打开状态,但是可能会在5.14版本中解决,因为   那么Python 3.8将作为兼容的新Python版本引入。

因此,您有2个选择:

  • 等待发布与Python3.8兼容的PySide2。

  • 或从aur安装Python3.7old version(使用yay),然后使用pip安装PySide2。

,

这实际上是使用Python 3.8的Qt for Python中的错误,但here已解决。

只需更新您的qt:

pip install PyQt5
本文链接:https://www.f2er.com/3085006.html

大家都在问