- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
好吧,几乎每个教程/可理解的用人类语言编写的文档都是针对 PyQt4 的。但是,PyQt5 改变了整个“将按钮连接到插槽”的工作方式,但我仍然不知道该怎么做。
我在 QtDesigner 中做了一个快速的图形用户界面,我有一个 QPushButton 和一个标签。单击按钮时,我希望标签上的文本发生变化。在 QtDesigner 中的 C++ 中,很容易将两者联系起来。但我必须全部用 python 编写。
我将带有 pyuic5 的 .ui 文件转换为 .py 文件。在 Ui_MainWindow 类中,我可以看到 setupUi 方法,它按如下方式初始化 self.button
self.testButton = QtWidgets.QPushButton(self.centralWidget)
self.testButton.setObjectName("newGame")
然后,在方法的最后,
QtCore.QMetaObject.connectSlotsByName(MainWindow)
被调用了,但是老实说,我不知道它做了什么以及它连接到哪里。
在主类中,继承自QMainWindow,我写了如下方法
@pyqtSlot(name='change')
def change_text(self):
self.ui.testLabel.setText("Button Clicked!")
而且我不知道如何将按钮信号连接到那个插槽。在 pyqt4 中,我可以通过执行 button.clicked.connect(self.change_text) 手动设置它,但正如我发现的那样,PyQt5 已经过时并丢弃了这种简单的设置。
拜托,有人可以帮我解决这个问题吗?
最佳答案
我不知道您从哪里得到“PyQt5 改变了整个‘将按钮连接到插槽’的工作方式”的想法,但这是完全错误的。没有这样的变化,从 PyQt 官方文档中可以很容易地看出:
但即使不阅读任何文档,也很容易自行测试。例如,在下面的脚本中,只需在前两行切换注释,它就会运行:
# from PyQt5.QtWidgets import (
from PyQt4.QtGui import (
QApplication, QWidget, QVBoxLayout, QPushButton, QLabel,
)
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.button = QPushButton('Test', self)
self.label = QLabel(self)
self.button.clicked.connect(self.handleButton)
layout = QVBoxLayout(self)
layout.addWidget(self.label)
layout.addWidget(self.button)
def handleButton(self):
self.label.setText('Button Clicked!')
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
至于其他要点:根据您目前的知识水平,我会说您可以安全地忽略 connectSlotsByName
和 pyqtSlot
。尽管它们有自己的用途(有关详细信息,请参阅上面的文档),但在 95% 的应用程序中几乎没有真正需要使用它们。
对于您的具体情况,语法很简单:
self.testButton.clicked.connect(self.change_text)
...
def change_text(self):
self.ui.testLabel.setText("Button Clicked!")
关于python - PyQt5:如何将 QPushButton 连接到插槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966056/
我创建了一个 GUI 宽度的 Qt Creator (Qt 5.0.1),当然也使用了布局。出于美学原因,我希望 QPushButton 与放置在 GUI 其他角落的另一个 QPushButton 具
如何扩展棕色的对象(QPushButton)。 坦率地说,我曾尝试通过添加 Horizontal layout 来做到这一点,但似乎效果不佳。 如图所示,当小部件最大化时,我想扩展(仅宽度)特定
我有一个二维数组QPushButton,当用户点击它时我如何获取按钮的索引?例如当用户点击按钮 a[2][3] 时,它会显示 (2,3) ? 最佳答案 这个例子是这样的: Qt 4/5 使用对象名称
最近想要那个QPushButton当鼠标指针进入时可以发出信号。我怎样才能做到? 我知道 QPushButton 有一些已经定义好的信号,比如 clicked() , pressed() , dest
我是 PySide 的新手。我想在其单击的插槽中获取 QPushButton obj(例如使用它来获取其文本)。 button = QtGui.QPushButton("start go") butt
请注意 redb.clicked[bool].connect(self.setColor) 行,为什么要添加 [bool] 部分?我试图删除该部分,将行修改为 redb.clicked.connect
我在 Qt Designer 中设计了两种不同的 QPushButton。一个是默认的,另一个我想说清楚。在 QT Designer 中,我将后者的初始样式表设置如下: background-colo
我有一个包含以下结构的小部件和布局的大布局: QVBoxLayout QTableView QPushButton 我将布局上的边距、内边距和间距设置为 0。这在 Mac OS X 上呈现的方
我有以下按钮样式表: QPushButton:hover{ background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1,
我有两个小部件(真实的和假的),其中一个有 QPushButton。现在我希望在另一个小部件中显示相同的按钮。我该怎么做? 我不想创建副本,我希望在不更改父级的情况下同时显示另一个小部件上的相同 QO
我在我的程序中使用 QPushButton()。使用这些按钮,我可以旋转我的对象。 到目前为止工作正常。唯一的问题是我必须单击多次才能进一步旋转对象。这有点烦人。只要我按下按钮并且对象将进一步旋转,按
我正在使用以下代码创建一个按钮。它工作正常。但我在左角得到了黄色矩形。为什么?请帮我。提前致谢, backButton = new QPushButton(tr("Back"));
我想让一些按钮看起来像你在 Skype 中看到的按钮。如何设计 QPushButton自定义形状?我不知道这样做。所以我需要一些建议。例如,我想要我的 QPushButton看起来像这样 image
我想将 QPushButton 对齐到右下角,但没有固定大小,因为如果我使用固定大小并调整窗口大小,它看起来就不再好看了。这是我的代码: self.copy_btn = QtWidgets.Q
我从 Qt 开始,每当有人将鼠标悬停在 QPushButton 上时,我想将 QPushButton 设置为不同的图标。到目前为止,这是我的代码: #include QPushButton *but
我在使用 Qt 4.6.0 和 QPushButtons 快捷方式时遇到问题: 当用户单击按钮时,我想在QTextEdit中显示特殊文本,但仅当按下按钮时,如下一旦发布,我希望出现另一个文本。 一切正
我从 Qt 开始,我想在有人将鼠标悬停在 QPushButton 上时将其设置为不同的图标。到目前为止,这是我的代码: #include QPushButton *button = new QPus
是否可以向 QPushButton 添加工具提示。我的意思是,当您将鼠标悬停在按钮上时,会出现一个小文本框(通常是黄色)并告诉用户该按钮正在做什么。 谢谢。 最佳答案 QPushButton 是 QW
我尝试在通过 QtWidgets.QColorDialog 设置 PNG 图像的颜色后更改其颜色。使用Python ---> 至 尽管如此,当我应用代码时,结果是: 它改变了我的PNG图像的背景 PN
我正在连接一个 QPushButton,它将在其中隐藏/显示框架内的小部件。 我使用 .ui 方法加载/创建了我的 GUI。 对于这个 QPushButton,我设置并检查了属性 setChecked
我是一名优秀的程序员,十分优秀!