问题标签 [pyside6]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
145 浏览

python - 使用 PySide/PyQt 运行 QThread 时禁用元素

这是我单击“确定”按钮时得到的。

但我想在run_action()仍在运行时禁用这两个按钮,最后将其重置bar为 0。

这是我当前的代码:

0 投票
1 回答
131 浏览

python - 仅对复选框进行排序

这是我当前的代码。

我希望当您单击列标题时,复选框按其状态排序。

如您所见, setSortingEnabled(True) 是不够的。

0 投票
2 回答
1628 浏览

python - Windows 10 上的 Qt6 for Python (PySide6):无法使 QtQml 和 QtQuick 从 QML 工作

在我的 Windows 10 机器上,我正在尝试一些简单的新 Qt6 示例,并且基于 QML 的示例对我不起作用。

我正在运行 Python 3.8.6 和虚拟环境

pyside6 在没有任何警告的情况下安装到 venv

和一个使用 QApplication 和 QLabel 的非 QML hello world 示例运行良好(这个:https ://doc.qt.io/qtforpython/tutorials/basictutorial/widgets.html )

这个例子不起作用,取自https://doc.qt.io/qtforpython/tutorials/basictutorial/qml.html

主要.py:

视图.qml:

我收到的尝试运行的消息是:

我验证并且文件没有丢失,它在那里:

我还缺少什么?

0 投票
1 回答
230 浏览

python - QGridLayout中的QScrollArea

在 PySide6 中(与 PySide2 和 PyQt5 相同)

我想将 QMainWindow 分为四个部分,每个部分都有一个 QScrollArea 用于显示图像。这是最小的可重现示例。

但是当我运行它时,只有当图像足够大时,QScrollArea 才能填充 QGridLayout 的网格。如果图像小于网格,则 QScrollArea 变为与图像相同的大小(小于网格)。

快照:
快照

如何使每个 QScrollArea 始终填充网格而不调整图像大小?(并不是说每个 QScrollArea 的大小都不同)

0 投票
1 回答
28 浏览

python - 在 on_change 函数中删除父布局(SIGSEGV 错误)

我有一个 QComboBox, cbo_box, 嵌套在一个框架中, self.ui.frameFilterControls, 带有: cbo_box.currentTextChanged.connect(self.choice_changed). 在self.choice_changed()中,我调用一个函数来清除框架布局,包括cbo_box,然后使用适当的控件(包括新的cbo_box)重新生成布局:

我遇到的问题是,当self.choice_changed()返回时,它会引发 SIGSEGV 错误:

我猜是因为它无处可归,但我不确定。我想知道是否有可能代替调用删除和重新创建控件的函数,on_change如果cbo_box我可以安排它在下一次表单更新时进行评估,或者类似的事情?


编辑:

我制作了一个重现该行为的最小示例。

当我运行上述程序并将组合框从“test 1”切换到“test 2”时,控制台输出如下:

我想要的行为是完全重新生成框架,而不会出现错误。谢谢!

0 投票
1 回答
721 浏览

python - PySide6 无法运行

我最近安装了 PySide 6。我正在运行 Ubuntu 20.04 尝试在 VSCode 上运行我的代码并且刚刚运行:export QT_DEBUG_PLUGINS=1

我收到以下消息:

我已经卸载并重新安装了 PySide 6,但仍然无法让它运行。我不确定我在该消息中缺少什么,我需要做什么。

我试图运行的代码是:

这只是“创建一个简单的应用程序”复制并直接从网站粘贴。

关于修复的任何想法?或者需要更多信息?

我还没有从 qt.io 的论坛或与此问题相关的任何其他文章中找到任何解决方案。

编辑

到目前为止,我遇到了一项工作。我可以直接从终端打开文件。但是,在尝试运行 VSCode 时它仍然无法正常工作。

编辑2

这有可能是 VSCode 扩展问题。PySide 或 QT 将文件保存在 .ui 中。我的代码在 .py 中。将其更改为 .ui 时,VSCode 提示我使用正确的扩展名来打开它。我还没有打开它,但我相信这就是我应该如何看待它。让它在终端中打开,而不是在 VSCode 中打开,告诉我这是 VSCode 所没有的。

0 投票
0 回答
2503 浏览

python - Raspberry OS 上的 Qt6 - 如何安装和使用 PySide6?

我一直在使用 PyQt5 在 Raspberry OS 上开发 GUI 应用程序。

现在我想为我的 Raspberry OS 使用最新的 Qt 版本 6。我搜索了一下,但找不到在 Raspberry OS 上安装 Qt6 和 PySide6 的简单解决方案。

如何安装和使用 Qt6 和 PySide6?

0 投票
0 回答
248 浏览

python - PySide6/shiboken6 的 ImportError

我试图让 PySide6 在 Python 3.8.0 中运行。安装顺利:

但我遇到了导入错误:

我做错了什么?

0 投票
0 回答
253 浏览

qt - 代理模型中不需要的空行

我对 Qt 的模型/视图架构有疑问。

我已经实现了一个TestModel继承自的类,具有插入新行和删除行QAbstractItemModel的自定义方法。我的模型具有层次结构,并且树中有不同的方法和不同的级别。TestModel.addRevision(...)TestModel.removeRevision(...)add_Xremove_X

当然,根据文档,我在插入或删除这样的行之前调用所需的函数(省略号处理基于我的数据源的信息检索,很长,我认为没有必要显示)

我一一插入行,并注意我没有通过调用添加太多行的常见错误self.beginInsertRows(parent, start, end)with end = start +1

去除方法具有非常相似的结构。

我可以通过附加 aQTreeView来验证我的模型工作正常。现在我还有一个更新方法,它执行以下操作(在伪代码中):

在模型上,此功能也按预期工作,一旦我触发更新,视图也会自动更新。请注意,我update也在初始化期间使用。

下一步,我实现了一个用于排序和过滤的代理模型。我的问题甚至可以使用 default 重现QSortFilterProxyModel,而无需设置任何过滤器。

我这样设置视图:

初始化后,视图按预期显示(见下面的截图) 初始化后

然后在我触发后update,视图显示变为

更新后

添加这些讨厌的空行的地方。与“好”行不同,它们是不可选择的,我不知道它们来自哪里。我尝试用QSortFilterProxyModela替换QIdentityProxyModel并且多余的行消失了,所以我非常有信心空行仅添加到QSortFilterProxModel. 但是,这是默认实现,我还没有覆盖任何排序和过滤方法。

有趣的是,当我使用 时QIdentityProxyModel,视图在调用 后显示所有项目处于折叠状态update,而QSortFilterProxyModel项目保持展开状态。

问题:

似乎调用beginInserRowsand是不够的endInsertRows。我是否需要发出其他信号来通知代理模型更新?

或者,在源模型中完成所有删除之前,代理模型是否更新得太快?

编辑 1

根据要求,这是update我模型的完整方法。我还包括了其他正在使用的类和方法:

更新模型:

添加修订:

删除修订:

编辑 2

根据@Carlton 的建议,我重新排序了remove_revision. 我明白,这很容易成为问题(现在或以后)。现在的实现如下:

后来我打算直接传递索引,但是为了调试我决定暂时存储它。但是,有问题的行为仍然存在不变。

编辑 3

因此,根据@Carlton 的建议,“幻影行”似乎是rowCount与实际数据不匹配的问题。

我在方法中重新排列了更多代码,add_revision以便为缩略图组提供以下内容:

如您所见,我手动选择了startandend参数。通过此修改,我可以将数据插入实际上放在两者之间beginInsertRowsendInsertRows并且“幻影行”消失了。但是,然后我有一个新问题:我通常无法事先知道新行将出现在哪些索引处。对于建议的信号,这似乎是一个很好的用途layoutAboutToBeChanged,但我怎样才能在pyside6中传递父列表?

编辑 4:MWE

这是一个最小的工作示例。您需要安装 PySide6。 MWE 和这里直接托管的相同代码:

0 投票
1 回答
538 浏览

python - PySide6:加载共享库时出错:libQt6DesignerComponents.so.6:无法打开共享对象文件

我正在尝试从终端运行 QT Designer

但收到错误消息:

检查文件夹,我可以确认libQt6DesignerComponents.so.6文件夹中存在:

我已经重新安装并尝试了替代方法PIPENV,但结果相同。试图在它要求我安装的同一文件夹中执行qtchooser。但是安装之后就不行了。

我在 Ubuntu 20.04 上。我可以找到一张票说它应该被解决。链接到解决方案

我也尝试了一些随机的东西,比如

这里描述了它的 foss。它没有用。

有人遇到过同样的问题并有解决方案吗?