我有一个 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 3.9.1 和 PyQt6。现在我想创建一个背景模糊的窗口,它应该如下所示:
模糊的窗口背景演示
如果有人为我提供此代码,将会很有帮助。
我正在从 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) 我不明白为什么信号不起作用。在 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) 我正在使用 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。
您好,我正在使用模型类来提供列表和组合框的项目。问题是我每次都对每个元素使用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) 我是 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)
当我尝试运行代码时,它给了我上面输入的错误
我正在将 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 都没有
我想将 uic 编译为 PySide6 但我找不到如何安装 pyside6-uic 工具。在哪里可以安装 pyside6-uic?我下载了 PySide6 但命令 pyside6-uic 不起作用。
标题中有一个参考:
我的代码中有以下行:
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 有什么想法吗?谢谢你!
我有这个 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 文档但没有找到任何结果
我安装了 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 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?