问题标签 [pyqt6]

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

python - 我想根据 QMenu 中的选中操作更改每次按下按钮时播放的声音

我有一个QMainWindow, 里面有一个QMenu,QLineEdit和一个QPushButton

每次单击该按钮时,它都会播放声音,然后将文本添加到 QLineEdit。在我的 QMenu 中,用户必须能够通过检查来选择播放的声音。

像这样

我试图通过self.s在每次检查 QAction 时更改 MainWindow 类中的变量来实现这一点,同时,其他 QAction 未选中。所以在我的playsound()我只是把self.view.s作为论点。

但是好像只是在读原著self.view.s,也就是第一声。我的改变信号self.view.s不起作用。此外,其他 QAction 并没有像我希望的那样取消选中。

下面是我的代码:

我希望能够playsound()根据在菜单栏中选中的 QAction 来更改值。在选中一个 QAction 时,应取消选中其他 QAction。

0 投票
0 回答
69 浏览

python - 自定义 paintEvent() 不会以某种大小填充整个小部件背景

我有一个 QWidget,我已将其设置为具有透明背景,并通过 paintEvent() 绘制了背景。

我已经向这个添加了子小部件,并且在渲染时似乎自定义paintEvent()无法绘制完整的背景,或者子小部件以某种方式覆盖它并阻止成功渲染。

截屏

通过 uic.loadUi('path.ui', self) 添加子小部件

示例代码:

0 投票
0 回答
958 浏览

python - mmdevice 音频输出错误:无法初始化 COM(错误 0x80010106)

我正在尝试使用 Pafy、vlc 和 PyQt6 制作音频播放器。当我运行下面的代码时,它运行良好。

但是,当我将它重写为一个类并从我的 PyQt6 代码中调用时,我收到了错误消息:

这是我的 GUI 代码:

这是 play_song 类:

经过一番尝试,我发现错误来自这两行

我在谷歌上搜索了一段时间,但仍然找不到解决方案。我在这里看到了同样的问题 ,但没有人回答。有谁知道如何修理它?

0 投票
1 回答
121 浏览

python - PyQt6删除带有嵌套类的自定义小部件导致程序崩溃

我正在使用 Python 3.9.5。

我在我的项目中遇到了一些严重的问题,这里是一个最小可重现的示例代码,以及一些描述。

问题很简单,如果我单击添加按钮,小部件将被添加并且一切正常,如果我双击 QTextEdit,它的应用按钮将显示并且它将从只读变为可编辑。

单击应用按钮后,该按钮将隐藏,相应的 QTextEdit 将再次只读。

我终于设法向 QTextEdit 添加了一个 doubleClicked 信号。

而且,问题是,如果我单击删除按钮,而不是按预期删除内容,它会使整个应用程序崩溃。

很抱歉,最小可重现的例子太长了,但我只设法用所有代码重现了这个问题,我真的不知道出了什么问题。

那么如何解决呢?

0 投票
0 回答
158 浏览

python - 在 macOS 11.4 上运行 python 3.9 Cython p2app PyQt6 Hello World 时出错

我正在使用 python 3.9 在 Cython 和 py2app 中编译一个简单的 Qt6“Hello World”应用程序。它在 CPython 3.9 下运行良好。它可以正确编译,但无法在 Cython 中运行。

以下是项目文件:

测试负载.pyx

主要.py

setup.py

当我运行程序时,我在控制台上收到此错误:

任何想法 ?

0 投票
1 回答
381 浏览

python - PyQt6 自动调整 QTextEdit 大小以适应内容问题

我在 QScrollArea 的 QVBoxLayout 中有一堆 QTextEdits。

文本通常会变得很长,并且水平空间受设计限制,而 QTextEdit 会自动将文本换成多行,这很好。

我想自动调整 QTextEdit 的大小以适合换行的文本,文本本身将始终在一行中,并且换行的文本可以有多行,我希望 QTextEdits 适合换行的高度。

经过数小时的谷歌搜索,我找到了一个解决方案,但它没有按预期工作,有时底部可能会多出一行,我将在下面发布示例代码:

请注意,您需要 Noto Serif 才能正确运行(当然您可以替换它),当然您还需要 PyQt6。

在示例中,前七个文本框的底部都有一个额外的空行,而后三个则没有。

是什么导致了多余的线以及如何删除它?

更新:

我必须设置 Qt.WidgetAttribute.WA_DontShowOnScreen 因为如果我不设置它,调用 QTextEdit 的 .show() 会导致 QTextEdit 出现在屏幕中间并迅速消失,这很烦人。

我必须调用 .show() 因为在没有 show() 的情况下调用 document().size(),值将全部为 0,我不知道为什么会这样。

0 投票
1 回答
252 浏览

python - PyQt6 如何动态调整 QGroupBox 的大小以适应内容?

我正在使用 Python 3.9.5 和 PyQt6。

在我之前的问题之后,我想问一下如何动态调整 QGroupBox 的大小以适应其内容。

我有一个QScrollArea,它的布局是一个QVBoxLayout,会在QVBoxLayout中加入一堆QGroupBox。

QGroupBox本身有一个QVBoxLayout,QVBoxLayout里面是一堆QVBoxLayout,QGroupBox的QVBoxLayout里面是QVBoxLayout里面的内容。

每个最低级别的 QVBoxLayout 都有两个小部件和一个 QHBoxLayout。

从上到下,第一个小部件是一个 QLabel,它是固定大小的 100x20,第二个小部件是一个 QTextEdit,它可以自动调整大小。QHBoxLayout 内部是一个大小为 60x20 的拉伸和固定大小的按钮,该按钮可以隐藏或显示。

小部件和布局的层次结构是这样的:

我希望 QGroupBoxs 自动调整大小以适应其内容。

宽度由布局决定,我希望 QGroupBoxs 具有基于其内容的固定、最小、最佳高度。

基本上,高度应该是其所有 VISIBLE 小部件的高度之和,加上上边距和下边距,以及小部件之间的边距,也许还有复选框的高度。

我想为 QGroupBoxs 设置固定高度,因为如果我不这样做,布局将拉伸 QGroupBoxs 并将其定位在中间,而不是在顶部的最小高度,这不是我想要的。

我将在下面发布示例代码:

您可以看到 QGroupBoxs 没有处于最佳高度,如果双击 QTextEdits 并出现 Apply 按钮,则 groupbox 的顶部会变大,复选框处于尴尬的位置,当 QTextBoxs 调整为更少的行时,底部边框将变得不可见。

并且布局的边距始终为零,QGroupBox 的打印边距与观察到的边距不匹配,QGroupBox 的 childrenRects 高度始终为零,QGroupBox 的 contentsRects 高度始终为 478,这不如果我只.isHidden().isVisible()小部件添加到布局中而不调用其.show().

但是当我将它们添加到布局中时,它们总是自动可见的,除非我明确地制作它们.hide()。除非已设置,否则调用.show()将使已经可见的小部件在屏幕中央闪烁。Qt.WidgetAttribute.WA_DontShowOnScreen

那么我如何才能动态地计算出最佳的最小高度呢?

而且我不能使用.addStretch(),因为我需要 QGroupBox 之间的最小、最佳间距,并且我需要通过使用索引使内容可删除,.addStretch()这会破坏索引排序,因为在删除项目时不会删除拉伸。

0 投票
1 回答
105 浏览

python - PyQt6:在高度缩小后重绘QTextEdit的底部边框?

我有一类从 QTextEdit 子类化的文本框,它会自动调整其内容的大小,并且在调整窗口大小时也会调整大小。

文本可以很长,并且文本框会自动换行文本,因此当水平空间增加时,文本框的高度会缩小,因为换行较少。

问题是当文本框缩小时,它们的底部边框将丢失,除非窗口的宽度缩小,否则它们将只有左、上和右边框。

最小的,可重现的例子:

当您单击最大化按钮时,文本框从三个换行变为一行,并且在您恢复窗口之前,底部边框将丢失。

我想重新绘制边框,我已经谷歌搜索了 8 个多小时但找不到解决方案,我尝试添加以下autoResize功能无济于事:

如何才能做到这一点?

0 投票
1 回答
94 浏览

python - 从一个类到另一个类的 QSpinBox 获取价值

我用 qt 设计器设计了一个 ui,我在一个类中有一个 QSpinBox,我需要从另一个类中获取它的值,但是<function class.fun at 0x0000028549B1DEE0>当我打印它时我得到了它。当我尝试在同一个班级打印时,它可以工作,请帮忙

代码:

0 投票
0 回答
83 浏览

python - 如果单击一组复选框中的任何一个,PyQt6如何触发动作?

我在 QGroupBox 内的 QVBoxLayout 内的 QGridLayout 内有九个 QCheckBox,并且我在 QGroupBox 中定义了一个函数,用于更新 QVBoxLayout 内的 QScrollArea,并且我希望在任何一组复选框被单击时执行该函数。

如何完成上述任务?我只知道.stateChanged.clicked信号,我必须创建九个连接吗?

这是示例代码:

如何在单击任何复选框时使函数运行,并消除 for 循环的需要,使函数自动知道单击了哪个复选框?

我已经尝试过@pyqtSlot(QCheckBox)def onItemClicked(self, item)但无济于事。

我已经用谷歌搜索过这个,而且谷歌从来没有找到你真正想要的任何东西。