标签: pyside6

“环境变量 PYSIDE_DESIGNER_PLUGINS 未设置,正在退出。”

我已经安装了开源 qt Creator(免费版本)并创建了非常简单的桌面应用程序。我能够创建简单的窗口,但是当我运行时,出现以下错误:

我尝试关注此页面,但无法理解如何解决此问题

https://www.qt.io/blog/qt-for-python-6.1

Environment variable PYSIDE_DESIGNER_PLUGINS is not set, bailing out.
No instance of QPyDesignerCustomWidgetCollection was found.
Run Code Online (Sandbox Code Playgroud)

Python文件

# This Python file uses the following encoding: utf-8
import os
from pathlib import Path
import sys

from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader


    class test(QMainWindow):
        def __init__(self):
            super(test, self).__init__()
            self.load_ui()
    
        def load_ui(self):
            loader = QUiLoader()
            path = os.fspath(Path(__file__).resolve().parent / "form.ui")
            ui_file = QFile(path)
            ui_file.open(QFile.ReadOnly)
            loader.load(ui_file, self)
            ui_file.close()
    
    
    if __name__ == "__main__":
        app = …
Run Code Online (Sandbox Code Playgroud)

qt qt-creator pyside6

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

Qt富文本中如何在span级别使用padding、margin等?

对于我的 QTextEdit,我想带来一些非常基本的嵌套突出显示,这是我在W3Schools“尝试一下!”上搞砸时制作的。看起来像这样。

“W3Schools”结果

据我所知,我只使用了Qt支持的 HTML 子集中的内容(请参阅下面代码中的 HTML,仅使用填充、边距和背景颜色)。

我无法获得类似的渲染,只有背景颜色似乎有效。

我创建了一个新项目,使用硬编码的 HTML/样式而不是我的程序生成进行简单的测试,但它仍然没有按应有的方式呈现。

这是代码。

import sys

from PySide6.QtWidgets import QApplication, QTextEdit, QMainWindow

app = QApplication(sys.argv)

test_window = QMainWindow()
test_text_edit = QTextEdit()

html = """
<!DOCTYPE html>
<html>
<head>
<style>
span.a {
  padding: 2px;
  margin: -2px;
  background-color: orange;
}
span.b {
  background-color: powderblue;
}
</style>
</head>
<body>
<div>volutpat. <span class="a">Aliquam <span class="b">venenatis</span> gravida</span> nisl</div>
</body>
</html>
"""
test_text_edit.setHtml(html)
test_window.setCentralWidget(test_text_edit)

test_window.show()

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

这是结果,缺乏明显的样式,我是疯了还是根据文档看起来不应该基本相同?不缺少让“嵌套”更清晰的填充吗?

我的 QTextEdit 结果

看来边距问题并不未知,边距样式在qt富文本标签中没有效果,但也没有人回答这个问题。

有人知道任何修复/解决方法吗?或者在哪里将其记录为 Qt 的已知限制?

我如何使用pyqt5中的QTextEdit来显示html的所有样式(包括css的样式)也相关,但不是重复的,它只是指向它所遵循的CSS的文档,它没有涵盖为什么它不'不遵循,或者如何遵循它所说的遵循的标准。

html css python pyside pyside6

7
推荐指数
0
解决办法
849
查看次数

尝试创建同时子类化 PySide6 类的 Python 抽象类时,元类发生冲突

我正在尝试创建一个抽象基类,它也继承任意 PySide6 类。但是,以下会产生错误TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

from abc import ABC, abstractmethod

from PySide6.QtWidgets import QApplication, QWidget


class MyBaseWidget(QWidget, ABC):

    def __init__(self, parent=None):
        super().__init__(parent=parent)
    
    @abstractmethod
    def foo(self):
        pass


class MyConcreteWidget(MyBaseWidget):

    def __init__(self, parent=None):
        super().__init__(parent=parent)


app = QApplication([])
widget = MyConcreteWidget()
widget.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)

我尝试使用下面看到的解决方案来解决这个问题(灵感来自解决元类冲突http://www.phyast.pitt.edu/~micheles/python/metatype.html多重继承元类冲突等)。

class MyMeta(ABCMeta, type(QWidget)): pass


class MyBaseWidget(QWidget, metaclass=MyMeta):

    def __init__(self, parent=None):
        super().__init__(parent=parent)
    
    @abstractmethod
    def …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyside pyside2 pyside6

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

PySide6:信号未包含在键入文件中?(QtCore.pyi 等)

考虑以下最小工作示例:

#!/usr/bin/env python3

from PySide6.QtCore import QTimer
from PySide6.QtWidgets import QLabel, QApplication

app = QApplication()
label = QLabel('Label')

x = 0

def timeout():
  global x
  x += 1
  label.setText(str(x))

timer = QTimer()
timer.timeout.connect(timeout)
timer.start(200)

label.show()
app.exec()
Run Code Online (Sandbox Code Playgroud)

它显示一个标签(一个非常小的窗口),其中包含一个递增计数器。这一切正常。但是,我使用 PyLance 扩展在 Visual Studio Code 中进行开发,并且 IDE 不知道以下timeout信号QTimer

time.timeout 工具提示

公平地说,按下F12打开QtCore.pyi的定义QTimer,这实际上不包含成员timeout

class QTimer(PySide6.QtCore.QObject):

    def __init__(self, parent:Optional[PySide6.QtCore.QObject]=...) -> None: ...

    def interval(self) -> int: ...
    def isActive(self) -> bool: ... …
Run Code Online (Sandbox Code Playgroud)

qt typing pyside qt6 pyside6

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

在 Raspberry PI 4 上运行 PySide6 和 GPIO

最近我买了一台全新的 Raspberry Pi 4B,内存为 8Gb,并安装了 Ubuntu Desktop 21.04。

我的目标是在触摸屏上创建一个 GUI,用于控制 GPIO 引脚(某些硬件设备)。

由于控制 GPIO 是由 Python 完成的,所以我也想用它来编写 GUI。我看了几个教程,决定使用 PySide6 + Qt Quick。这种程序在我的个人笔记本电脑上运行良好,但当尝试下载 Raspberry 上所需的依赖项时,例如:

python3.9 -m pip install PySide6

我收到以下错误:

ERROR: Could not find a version that satisfies the requirement PySide6 (from versions: none)
ERROR: No matching distribution found for PySide6
Run Code Online (Sandbox Code Playgroud)

我认为这个问题可能是由交叉编译引起的。

您知道是否有机会在 Raspberry Pi 4B 上运行 PySide6 和 QtQuick?

更新

在采用 Manjaro ARM KDE Plasma 21.07 64 位操作系统的 Raspberry Pi 4B 上进行测试

运行以下命令:

* Update the package database …
Run Code Online (Sandbox Code Playgroud)

user-interface pyside qt-quick raspberry-pi pyside6

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

MyPy 抱怨 Qt.AlignmentFlag

当我升级到 PySide6 6.2.2 时,MyPy 开始抱怨Qt.AlignmentFlag. 这是一个小例子:

from PySide6.QtGui import Qt
from PySide6.QtWidgets import QLabel, QApplication

app = QApplication()
label = QLabel("Hello, World!")
label.setAlignment(Qt.AlignCenter)
label.show()

app.exec()
Run Code Online (Sandbox Code Playgroud)

仍然运行良好,但 MyPy 抱怨:

$ mypy foo.py 
foo.py:6: error: Argument 1 to "setAlignment" of "QLabel" has incompatible type "AlignmentFlag"; expected "Alignment"
Found 1 error in 1 file (checked 1 source file)
$
Run Code Online (Sandbox Code Playgroud)

好的,我尝试将 转换AlignmentFlagAlignment.

from PySide6.QtGui import Qt
from PySide6.QtWidgets import QLabel, QApplication

app = QApplication()
label = QLabel("Hello, World!") …
Run Code Online (Sandbox Code Playgroud)

qt pyside6

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

ModuleNotFoundError:使用 Visual Studio Code 在 Python 中没有名为“PySide6”的模块

*** 更新*** 这个问题已由whiteroom 在评论部分解决。问题是需要更改 Python 解释器设置以指向正确的设置。白室问题的回答也非常有帮助。

*** 原始问题 *** 我在我的 MacBook 上安装了 PySide6 并确认它已安装,如所附屏幕截图所示。我对 Python 和 Mac 终端应用程序也很陌生。

pip3 install PySide6
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我尝试从 Visual Studio Code 编辑器运行这个简单的应用程序。

from PySide6.QtWidgets import QApplication,QLabel
app   = QApplication([])
label = QLabel('hello world')
label.show()
app.exec()
Run Code Online (Sandbox Code Playgroud)

Python 响应此错误:

Traceback (most recent call last):
  File "/Users/emad-ud-deen/Development/Python/Practice/PySide6 Test.py", line 1, in <module>
    from PySide6.QtWidgets import QApplication,QLabel
ModuleNotFoundError: No module named 'PySide6'
Run Code Online (Sandbox Code Playgroud)

我能够运行使用 PySide6 编写的应用程序而不会出现该错误的唯一方法是从终端中的命令行。

你能告诉我如何让 Visual Studio Code 识别 PySide6 吗?

python installation pyside6

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

升级 PySide6 后出现错误 No module named 'PySide6.QtWidgets'

升级到PySide6.3.0后出现错误ModuleNotFoundError: No module named 'PySide6.QtWidgets'

来源

import sys
from PySide6.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
label = QLabel("Hello World!")
label.show()
app.exec()
Run Code Online (Sandbox Code Playgroud)

错误:

$ python3.10 test.py 
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    from PySide6.QtWidgets import QApplication, QLabel
ModuleNotFoundError: No module named 'PySide6.QtWidgets'
Run Code Online (Sandbox Code Playgroud)

看来有变化PySide6.3.0

如何导入QtWidgets模块PySide6.3.0

编辑:

很明显它正在导入 PySide6 包,但它没有导入 QtWidgets、QtGui、QtCore 等包

#!/usr/bin/env python3.10
import sys
import PySide6
from PySide6 import QtWidgets
from PySide6.QtWidgets import (QApplication, QMainWindow, QWidget, QPushButton, QVBoxLayout, …
Run Code Online (Sandbox Code Playgroud)

qwidget importerror pyside6 python-3.10

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

如何将 QT6 深色主题与 PySide6 一起使用?

简单的演示应用程序我试图将主题设置为 dark。我更喜欢代码版本(非 QtQuick 首选),但我看到的 Python 唯一方法是使用 QtQuick 配置文件,即使这样也行不通。

from PySide6 import QtWidgets
from PySide6 import QtQuick

if __name__ == '__main__':
    app = QtWidgets.QApplication()
    app.setApplicationDisplayName("Should be Dark Theme")
    app.setStyle("Universal")
    view = QtQuick.QQuickView()
    view.show()
    app.exec()
Run Code Online (Sandbox Code Playgroud)

我在同一目录中有一个qtquickcontrols2.conf 配置文件。(还尝试将 QT_QUICK_CONTROLS_CONF 设置为绝对路径。)

[Controls]
Style=Material

[Universal]
Theme=Dark

[Material]
Theme=Dark
Run Code Online (Sandbox Code Playgroud)

然而,它仍然是亮白色的:

不是黑暗主题

我不在乎它是材质风格还是通用风格,只想为标题栏内置一些深色模式。最后,需要一种方法使标题栏变暗,而无需创建自定义标题栏。

感谢您的指导!

python python-3.x qt6 pyside6

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

为什么Qt6的wayland和xorg外观不一样?

我正在尝试使用 Qt 制作一个非常简单的窗口。

我的目标是获得看起来像本机操作系统窗口的东西(以最少的努力),仅此而已,但如果可能的话也不会少。

为了使它更容易,我使用 Qt python 绑定,并且自从我的第一个组合失败后我尝试了不同的组合。我必须做出的选择是:

  • PyQt或者PySide
    • 我更喜欢第二个,因为它是唯一的官方支持(而且它们非常等效)
  • Qt5或者Qt6
    • 我更喜欢第二个,因为它是最新的稳定版

现在,正如之前所说,我尝试了不同的组合,但第一个选择似乎无关紧要,而第二个选择很重要:

  • Qt5窗口在 XOrg 和 Wayland 上看起来相同
  • Qt6窗口不,无论我使用哪个Python包(PyQtPySide

特别Qt6是在 Wayland 上,它会覆盖默认的操作系统样式,包括指针(即指针在窗口悬停时发生变化Qt6),并且它不会在 XOrg 上发生,也不会发生Qt5(在 Wayland 上和 XOrg 上具有相同的外观)。

这是一个简单示例的几个屏幕截图:

  • Qt6( PySide6) 位于韦兰

qt6-wayland

  • Qt6PySide6XOrg 上的( )

据了解,这两个窗口是由相同的脚本生成的......

qt6-xorg

wayland qt6 pyside6

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