问题标签 [pyside2]

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 回答
2636 浏览

python - 如何使用 QAbstractItemModel 从 QTreeView 中删除行?

我试图从模型中删除 QTreeView 项目“节点 6(删除我)”。

我无法让它工作,因为没有任何内容被删除。我究竟做错了什么?
请参阅MainWindow.init删除代码的方法。

在此处输入图像描述

0 投票
1 回答
1249 浏览

python - 使用 QComboBox 选择显示的不同小部件集

我正在使用左侧工具栏的图像查看器。由于我有许多措施要做,但想将大部分显示用于图片并保持工具栏薄,我想使用combo_box1combo_box2选择工具栏中显示的不同小部件。

示例 1:如果我选择measurements set 1in combo_box1,那么我可以在测量值P1-P2P3-P4in之间进行选择combo_box2

示例 2:如果我选择measurements set 2in combo_box1,那么我将能够在测量P5-P6P7-P8in之间进行选择combo_box2

这是代码:

0 投票
0 回答
968 浏览

python - 将 QMenuBar 添加到 QWidget

我正在尝试将 QMenubar 集成到 Python3 中 Pyside2 中的 QWidget 中。将 QMenubar 集成到 QMainWindow 似乎更容易,但我使用 QWidget 而不是 QMainWindow 开始项目,这就是为什么我想为 QWidget 提供解决方案。

当我运行代码时,没有错误消息,但是当我运行应用程序时菜单栏没有出现。我检查了stackoveflow页面,但它没有帮助我或者我无法实现它。

代码

这是我得到的截图:

在此处输入图像描述

编辑:不是最佳解决方法:添加 QMainWindow 类

这不是最佳解决方法。我不得不添加一个额外的并从内部class QMainWindow调用WidgetQMainWindow

0 投票
1 回答
128 浏览

python - 从线程调用的类中的动画函数不起作用

我有一个 qt5 ui 文件,我正在通过一个具有淡入/淡出功能的类加载它:

我正在加载它:

然后我启动一个线程,它正在做一些事情,比如阅读配置:

工作正常,在线程的某个点我想调用我的 LoadingScreen() 类的淡出函数。函数被执行但动画不起作用?我究竟做错了什么?在其他地方调用淡出函数表单有效,但不在我的线程内。

我正在使用 Python 2.7、Qt5 和 PySide2。

谢谢你的帮助!!

0 投票
2 回答
476 浏览

python - PyQt5 / PySide2 代码只执行使用 ascii 字符的作品

我为一个名为 Nuke 的程序做了一个脚本扩展,它打开一个带有 lineedit 的对话框并允许用户输入一个标签。但是,当 lineedit 中只有 ascii 字符时,脚本仅通过按 enter 执行 setLabel()。

text()如果您通过普通 ui 执行此操作,则返回 unicode 并且 Nuke 对标签中的特殊字符(如 äöü)没有问题

这是我的代码:

0 投票
1 回答
835 浏览

python - 从 pyside2 获取根对象

我有一个小应用程序,我想最小化到系统托盘,并且我确实有创建图标并将其最小化到系统托盘的代码(故意我不想覆盖默认关闭操作)。

但是,我不知道如何从 qml 获取我的根对象,所以我无法执行任何操作,当我得到它时,它会是什么类型?

现在我在我的应用程序上“工作”的以下代码,即使不能正常工作。

我所做的唯一一件事就是改变了

我可以使用这段代码,但不是操纵我的窗口,我得到了一个完全新的窗口,但我确实得到了正常的系统托盘图标和我需要的所有菜单项。

所以底线是,我怎样才能获得我的根目录的引用,以及我怎样才能使用最小化来放置它。

我的 QML 的根是普通的 ApplicationWindow。

只是一个小编辑,我在他们曾经使用的一些 c++ 示例中看到了,

但正如我所见,这不再起作用了。但我还没有找到任何类似的方法。

0 投票
1 回答
3065 浏览

python - 从我的脚本创建 pyinstaller,结果中缺少 PySide2.QtXml

我所做的是打电话

pyinstaller 为我的脚本获取所有重要的库。值得一提的是,我正在使用 Windows 机器。但是当我运行结果时它告诉我:

所以这里有两个问题:

  1. 我在 python 安装中找不到名为“PySide2.QtXml”的库。所以我假设 .dll 有不同的名称?.dll 的真实名称是什么?我找到了 Qt5Xml.dll,但我不知道这是否是正确的库。

  2. 一旦我有了我的库,我想将它添加到我的 example.spec 文件中。文档说它必须看起来像这样:

    但我不确定如何将其应用于我目前缺少的库。我假设

    将是要走的路吗?

提前致谢!

0 投票
1 回答
1556 浏览

python - 当我编译我的python代码时,我得到:RecursionError:调用Python对象时超出了最大递归深度

编辑:尝试了用 cython 编译的 pyqt5 的等效代码。它工作得很好,所以这似乎是一个 pyside2 错误。

最新版本的 cython。当我用 python 运行它时,我的应用程序运行良好,但是当我将它变成一个模块并从一个简单的启动器脚本中导入模块时,它似乎没有看到来自互联网的任何数据,它也给了我这些:RecursionError:最大调用 Python 对象时超出递归深度。

Nuitka 有同样的问题,但没有给我这些递归错误。

我不知道它是否相关,但是在使用 gcc 编译程序(制作目标代码)时,我也得到了这个错误/警告/注释(唯一的一个):

也不确定是否相关,但我有一堆类(线程)在一个完成循环时调用下一个类。即使它在 python 中工作正常,也许这是一个 nono?

我正在使用 pyside2、请求、delorean 和人性化。我什至不知道如何开始调试,这是一个 4000 行的程序。

编辑:好的,所以我设法在一个最小的例子中重现了确切的问题。在使用 cython 或 nuitka 编译之前,此代码将完美运行。如果你用 cython 编译它,它会输出:

并挂起,但它会显示窗口内容。使用 nuitka 它永远不会显示窗口的内容,但线程将按预期运行。如果有人能解释它为什么会发生以及我如何解决它,那就太好了:

0 投票
1 回答
16428 浏览

python - 如何将 Python 和 QML 与 PySide2 连接起来?

我想在 Ubuntu 上编写一个简单的桌面应用程序,我认为一个简单的方法是使用 Qt 和 QML 作为 GUI 和 Python 作为逻辑语言,因为我对 Python 有点熟悉。

现在我尝试了几个小时以某种方式连接 GUI 和逻辑,但它不起作用。我管理了连接 QML --> Python,但不是相反。我有代表我的数据模型的 Python 类,并添加了 JSON 编码和解码函数。因此,目前不涉及 SQL 数据库。但也许 QML 视图和某些数据库之间的直接连接会使事情变得更容易?

所以现在一些代码。

QML --> Python

QML 文件:

然后我有我的slots.py:

最后是我的 main.py:

这工作正常,我可以打印“你好!”。但这是最好的方法,还是创建一个带有插槽的类并使用setContextProperty能够直接调用它们而不添加额外的信号更好?

Python --> QML

我无法完成这件事。我尝试了不同的方法,但都没有奏效,我也不知道哪一种最好用。我想要做的是例如显示对象列表并提供在应用程序中操作数据的方法等。

  1. 包括 Javascript:我添加了一个带有函数的附加文件application.js,只是为了打印一些东西,但它可能用于设置文本字段的上下文等。然后我尝试使用 QMetaObject 和 invokeMethod,但只是出现错误参数等错误。

这种方法有意义吗?其实我不知道任何javascript,所以如果没有必要,我宁愿不使用它。

  1. ViewModel 方法我创建了一个文件 viewmodel.py

    /li>

在 main.py 我添加了:

ListView 看起来像这样:

我收到一个错误“myModel is not defined”,但我想它无论如何都不能工作,因为代表只接受一个元素而不是一个列表。这种方法是一个好方法吗?如果是,我该如何让它工作?

  1. 在 QML 视图中操作数据是否有完全不同的方法?

我感谢您的帮助!我知道 Qt 文档,但我对它不满意。所以也许我错过了一些东西。但是 PyQt 似乎比 PySide2 更受欢迎(至少谷歌搜索似乎表明这一点)并且 PySide 引用经常使用 PySide1 或不使用 QML QtQuick 的做事方式......

0 投票
1 回答
792 浏览

python - vlc player freezes GUI (python thread?)

I have this piece of code that works with no issues :

how ever i would like to itterate through a list, and use normal vlc player to play it.

This does almost the same thing, and it suits my needs better, however it freezes my GUi,(qml/pyside2). So now i am cofused, am i supposed to make a new thread for this, or is there some other way to do this in vlc.

Well i did try creating new thread and running the function above in it, however same issue, the moment player goes in to for loop and start play method, the gui freezes.(the vlc works normaly, and plays the playlist, but gui is unresponsive for duration)

so just to expand a bit , this is the part that i have, and it works ok, but i cant get data from my songs during their play time, since all i have is url, and not the metadata .

what i would want is:

Or more simple, is there a way that i paste "video" in to the media_list and then from there i could access data about current song, as well playing the song ?

I dont know what could help you from qml side, the only thing i do is trigger this function on button click.