标签: pyside6

无法在qt快速应用程序中构建图形管道状态

我有一个 qt 快速 pyside 应用程序。我之前有一个问题,但现在出现了另一个问题。只是出现一个空窗口,然后在应用程序窗口中我看到下面的消息。虽然我有另一个用 c++ 编写的 qt 快速应用程序,显示没有问题,显示这条消息!,这个应用程序是python(pyside6)

我使用 Qt 6.0.2、Python 3.9.2、Qt Creator 4.14.1 和 Pyside6

Failed to create vertex shader: Error 0x80070057: The parameter is incorrect.
Failed to build graphics pipeline state
Run Code Online (Sandbox Code Playgroud)

*主.qml

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15

Window {
    id:mainWindow
    width: 1000
    height: 580
    visible: true
    title: qsTr("JooyaTrader")

    Rectangle{

        width: 152
        height: 62
        anchors.fill: parent
        color: "red"
    }
}
Run Code Online (Sandbox Code Playgroud)

主要.py

import sys,os
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine …
Run Code Online (Sandbox Code Playgroud)

python qt pyside qtquick2 pyside6

5
推荐指数
1
解决办法
1633
查看次数

创建透明模糊窗口

我正在使用 Python 3.9.1 和 PyQt6。现在我想创建一个背景模糊的窗口,它应该如下所示:

模糊的窗口背景演示

如果有人为我提供此代码,将会很有帮助。

python pyqt pyside6 pyqt6

5
推荐指数
1
解决办法
2985
查看次数

新的 Snake_case 功能在 PySide6 中如何工作?

我正在从 PySide2 版本 5 升级到 PySide6,发行说明说它支持蛇形方法名称以及用属性替换 getter 和 setter 方法。这听起来像是一个很大的改进,但我不知道如何启用它。发行说明中有一个代码示例,但它无法运行。当我尝试将其扩展为可运行的示例时,新版本不起作用。

这是仍然适用于 PySide6 的旧样式:

import sys
from PySide6.QtWidgets import (QTableWidget, QPushButton, QVBoxLayout,
                               QApplication, QWidget)


class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        table = QTableWidget()
        table.setColumnCount(2)

        button = QPushButton("Add")
        button.setEnabled(False)

        layout = QVBoxLayout(self)
        layout.addWidget(table)
        layout.addWidget(button)


if __name__ == "__main__":
    app = QApplication([])

    widget = MyWidget()
    widget.resize(800, 600)
    widget.show()

    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

这是不起作用的新版本:

from __feature__ import snake_case, true_property

import sys
from PySide6.QtWidgets import (QTableWidget, QPushButton, QVBoxLayout,
                               QApplication, QWidget)


class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        table = …
Run Code Online (Sandbox Code Playgroud)

python pyside6

5
推荐指数
1
解决办法
2084
查看次数

Pyside6 中的信号

我不明白为什么信号不起作用。在 PyQt5 中,这段代码可以工作(不同之处在于,它不是 Signal,而是 pyqtSignal)。

当您单击按钮时,TextEdit 应该显示消息“正在连接到设备”,如果您将 pyside 替换为 pyqt,代码将正常工作

import sys
from PySide6.QtCore import *
from PySide6.QtWidgets import *


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(188, 267)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.pushButton = QPushButton(self.centralwidget)
        self.pushButton.setObjectName(u"pushButton")
        self.pushButton.setGeometry(QRect(50, 140, 75, 24))
        self.textEdit = QTextEdit(self.centralwidget)
        self.textEdit.setObjectName(u"textEdit")
        self.textEdit.setGeometry(QRect(30, 40, 104, 71))
        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)
        QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.pushButton.setText(QCoreApplication.translate("MainWindow", u"PushButton", None))

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self, parent=None)
        self.dragPos = None
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.show()

def update_text(value, textEdit): …
Run Code Online (Sandbox Code Playgroud)

python pyside pyside6

5
推荐指数
1
解决办法
1万
查看次数

在 PySide6 中使用 GraphicalEffects

我正在使用 PySide6 并尝试使用 GraphicalEffects 模块。

根据此处的文档: https: //doc.qt.io/qt-6/qtgraphicaleffects5-index.html

我在做:

import Qt5Compat.QtGraphicalEffects
Run Code Online (Sandbox Code Playgroud)

我收到的错误:

"Qt5Compat.QtGraphicalEffects" is not installed
Run Code Online (Sandbox Code Playgroud)

我如何安装这个模块?我的 Linux 机器上安装了 PySide6.2.2.1。

qt qml pyside2 qt6 pyside6

5
推荐指数
1
解决办法
1070
查看次数

PySide6 中 QML 的后端是否有更干净的方法?

您好,我正在使用模型类来提供列表和组合框的项目。问题是我每次都对每个元素使用setContextProperty() 函数。我正在寻找一种解决方案,其中所有元素(列表和组合框)都使用相同的 ContextProperty。此外,通过这种方式,我猜想 JSON 文件可以动态加载,而不是在开始时加载所有文件。

主要.py

class Model(QAbstractListModel, QObject):
    """ it reads JSON file, that is given as argument,
    and creates the model"""

if __name__ == "__main__":
    app = QGuiApplication(sys.argv)
    engine = QQmlApplicationEngine()

    model1 = Model("file1.json")
    model2 = Model("file2.json")
    model3 = Model("file3.json")
    model4 = Model("file4.json")
    model5 = Model("file5.json")

    engine.rootContext().setContextProperty("model1", model1)
    engine.rootContext().setContextProperty("model2", model2)
    engine.rootContext().setContextProperty("model3", model3)
    engine.rootContext().setContextProperty("model4", model4)
    engine.rootContext().setContextProperty("model5", model5)

    engine.rootContext().setContextProperty("applicationDirPath", os.path.dirname(__file__))
    engine.load(os.path.join(os.path.dirname(__file__), "main.qml"))

    if not engine.rootObjects():
        sys.exit(-1)
    sys.exit(app.exec())
Run Code Online (Sandbox Code Playgroud)

python qt qml pyside6

4
推荐指数
1
解决办法
1637
查看次数

错误:QQmlApplicationEngine 无法加载组件“网络问题”

我是 qml 和 python 的新手这是我得到的代码和错误:

错误:

QQmlApplicationEngine failed to load component
c:%5CUsers%5Cpcmcb%5COneDrive%5CDesktop%5Capp%5Capp%5Cqml/main.qml: Network error
Run Code Online (Sandbox Code Playgroud)

主要.py:

mport sys
import os

from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine


if __name__ == "__main__":
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load(os.path.join(os.path.dirname(__file__), "qml/main.qml"))


if not engine.rootObjects():
    sys.exit(-1)
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

主要.qml:

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import QtQuick.Controls.Material 2.15

ApplicationWindow{
    id: window
    width: 400
    height: 580
    visible: true
    title: qsTr("Login Page")
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行代码时,它给了我上面输入的错误

python qml pyside6

4
推荐指数
1
解决办法
2161
查看次数

为什么类似的信号/槽连接在 Pyqt5 到 PySide6 端口后表现不同

我正在将 pyqt5 GUI 移植到 pyside6,但遇到了一个我不明白的问题。

我有两个 QSpinbox,它们控制两个 GUI 参数:一个 Spinbox 控制拆分器的重量,另一个控制 QtableView 中的行高。

这是pyqt5中的代码:

spinbox1.valueChanged.connect(my_splitter.setHandleWidth)
spinbox2.valueChanged.connect(my_view.verticalHeader().setDefaultSectionSize)
Run Code Online (Sandbox Code Playgroud)

在 Pyside6 spinbox1 工作正常,但 spinbox2 没有完成其工作,并且有此警告:

您无法在源自 C++ 的对象上添加动态槽。

将第二行代码修改为:

spinbox2.valueChanged.connect(lambda x: my_view.verticalHeader().setDefaultSectionSize(x))
Run Code Online (Sandbox Code Playgroud)

很高兴找到解决方案,但我还想了解为什么两个连接在 PySide6 中表现不同以及为什么使用 lambda 可以解决问题。

警告消息可能提供了线索,但我不知道动态插槽是什么(快速谷歌对我没有多大帮助)。

编辑: 由于我更改了两件事:Qt5 > QT6 和 pyqt > pyside 我在 4 个 python 包装器(pyqt5、pyqt6、pyside2、pyside6)中查看了这一点,以了解哪些更改导致了问题。我可以看出 pyside 2 和 6 都显示了这种行为,并且 pyqt 都没有

python qt pyqt5 pyside6

4
推荐指数
1
解决办法
492
查看次数

如何使用 PySide6 编译 uic

我想将 uic 编译为 PySide6 但我找不到如何安装 pyside6-uic 工具。在哪里可以安装 pyside6-uic?我下载了 PySide6 但命令 pyside6-uic 不起作用。

标题中有一个参考:

https://doc.qt.io/qtforpython/tutorials/basictutorial/uifiles.html#using-ui-files-from-designer-or-qtcreator-with-quiloader-and-pyside6-uic

pyside6

3
推荐指数
1
解决办法
2万
查看次数

使用 PySide6 的 QFontMetrics 宽度

我的代码中有以下行:

self.textLength = self.fontMetrics().width(self.text())
Run Code Online (Sandbox Code Playgroud)

它适用于 PyQt5,但我试图将代码移至 PySide6,当我这样做时,我收到错误AttributeError: type object 'PySide6.QtGui.QFontMetrics' has no attribute 'width'

我尝试阅读 QFontMetrics 文档,但我所做的一切似乎都会给出相同的错误。关于如何将此行转换为 PySide6 有什么想法吗?谢谢你!

qt pyside pyqt5 pyside6

2
推荐指数
1
解决办法
2029
查看次数

PySide6 中 QTimer() 函数的问题该函数不循环

我有这个 PySide 应用程序,我想每 1 秒运行一次函数 pp,但是当我运行该应用程序时,它只运行了 1 次。

import sys
from PySide6.QtWidgets import QMainWindow, QApplication
from PySide6 import QTimer


class MainWindow(QMainWindow):
    def __init__(self):

        QMainWindow.__init__(self)
        ###
        self.timer = QTimer()
        self.timer.timeout.connect(self.pp())
        self.timer.start(1000)
        print(self.timer.isActive())

    def pp(self):
        print("LOL")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    #app.show()
    sys.exit(app.exec())
Run Code Online (Sandbox Code Playgroud)

控制台输出:

LOL
True
Run Code Online (Sandbox Code Playgroud)

我搜索了Qt 文档但没有找到任何结果

python pyqt qtimer pyside6

2
推荐指数
1
解决办法
1077
查看次数

PySide6 插件错误 (xcb)

我安装了 Linux Mint,并在使用 PySide6 启动应用程序时出现错误:`qt.qpa.plugin:即使找到了,也无法在“”中加载 Qt 平台插件“xcb”。该应用程序无法启动,因为无法初始化 Qt 平台插件。重新安装应用程序可能会解决此问题。

可用的平台插件有:vnc、minimalegl、vkkhrdisplay、wayland、xcb、wayland-egl、eglfs、offscreen、minimal、linuxfb。

如果我使用 PyQt5 我不会有错误。但我需要 PySide6

我厌倦了安装“xcb” - sudo apt install xcb 我厌倦了:export QT_QPA_PLATFORM_PLUGIN_PATH=/path/to/plugins

python linux pyqt pyside pyside6

2
推荐指数
1
解决办法
908
查看次数

PySide6 将 ImageQt 转换为 QPixmap

我正在将旧的 Python 2.7 代码转换为 Python 3,并在最后一行出现以下错误:

ar = imgArray*255
ar = numpy.clip(ar, 0, 255, out=ar)
img = Image.fromarray(ar.astype("uint8"))
qim = ImageQt.ImageQt(img)   
pm = QtGui.QPixmap.fromImage(qim)


TypeError: 'PySide6.QtGui.QPixmap.fromImage' called with wrong argument types:
  PySide6.QtGui.QPixmap.fromImage(ImageQt)
Run Code Online (Sandbox Code Playgroud)

那么,问题是:如何从 PySide6 中的 ImageQt 对象获取 QPixmap?

python pyside6

1
推荐指数
1
解决办法
2298
查看次数

标签 统计

pyside6 ×13

python ×10

qt ×5

pyside ×4

pyqt ×3

qml ×3

pyqt5 ×2

linux ×1

pyqt6 ×1

pyside2 ×1

qt6 ×1

qtimer ×1

qtquick2 ×1