PyQt QPushButton
最后修改于 2023 年 8 月 24 日
在本文中,我们将展示如何使用 QPushButton 部件。
请访问 PyQt5 教程,或查看 所有 PyQt 教程列表。
,阅读PyQt QPushButton
QPushButton
是一个当用户点击它时执行操作的部件。一个 QPushButton
可以显示文本和图标。
当通过鼠标、空格键或键盘快捷键激活时,按钮会发出 clicked
信号。
QPushButton 示例
以下示例创建了一个退出按钮。当我们点击该按钮时,应用程序将终止。
#!/usr/bin/python import sys from PyQt6.QtWidgets import QWidget, QPushButton, QApplication, QVBoxLayout from PyQt6.QtCore import Qt class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vbox = QVBoxLayout() qbtn = QPushButton('Quit', self) vbox.setAlignment(Qt.AlignmentFlag.AlignLeft) qbtn.clicked.connect(QApplication.instance().quit) vbox.addWidget(qbtn) vbox.addStretch(1) self.setLayout(vbox) self.setGeometry(400, 400, 400, 300) self.setWindowTitle('Quit button') self.show() def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec()) if __name__ == '__main__': main()
QPushButton
被放置在一个 QVBoxLayout
中。
qbtn = QPushButton('Quit', self)
创建了 QPushButton
。该按钮只显示文本。
qbtn.clicked.connect(QApplication.instance().quit)
我们将 clicked
信号连接到 QApplication
的 quit
函数。

带图标的 QPushButton
QPushButton
可以显示带图标的文本。
#!/usr/bin/python import sys from PyQt6.QtGui import QIcon from PyQt6.QtWidgets import QWidget, QPushButton, QApplication, QHBoxLayout class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout() btn1 = QPushButton(QIcon('exit.png'), 'Exit', self) btn2 = QPushButton(QIcon('save.png'), 'Save', self) btn3 = QPushButton(QIcon('new.png'), 'New', self) hbox.addWidget(btn1) hbox.addWidget(btn2) hbox.addWidget(btn3) hbox.addStretch(1) self.setLayout(hbox) self.move(300, 300) self.setWindowTitle('Icons') self.show() def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec()) if __name__ == '__main__': main()
在此示例中,我们有三个按钮。我们将一个 QIcon
作为第一个参数传递给 QPushButton
。

QPushButton 切换按钮
切换按钮是处于特殊模式下的 QPushButton
。它是一个有两种状态的按钮:按下和未按下。我们通过点击它来在这两种状态之间切换。切换按钮通过 setCheckable
函数创建。
#!/usr/bin/python from PyQt6.QtWidgets import (QWidget, QPushButton, QHBoxLayout, QVBoxLayout, QFrame, QApplication) from PyQt6.QtGui import QColor import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout() vbox = QVBoxLayout() self.col = QColor(0, 0, 0) redb = QPushButton('Red', self) redb.setCheckable(True) redb.clicked.connect(self.setColor) greenb = QPushButton('Green', self) greenb.setCheckable(True) greenb.clicked.connect(self.setColor) blueb = QPushButton('Blue', self) blueb.setCheckable(True) blueb.clicked.connect(self.setColor) hbox.addWidget(redb) hbox.addWidget(greenb) hbox.addWidget(blueb) self.square = QFrame(self) self.square.setFixedSize(180, 180) self.square.setStyleSheet("QWidget { background-color: %s }" % self.col.name()) vbox.addLayout(hbox) vbox.addWidget(self.square) self.setLayout(vbox) self.move(300, 300) self.setWindowTitle('Toggle button') self.show() def setColor(self, pressed): source = self.sender() if pressed: val = 255 else: val = 0 if source.text() == 'Red': self.col.setRed(val) elif source.text() == 'Green': self.col.setGreen(val) else: self.col.setBlue(val) self.square.setStyleSheet('QFrame { background-color: %s }' % self.col.name()) def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec()) if __name__ == '__main__': main()
该示例包含三个切换按钮和一个 QWidget
。我们将 QWidget
的背景颜色设置为黑色。切换按钮可以切换颜色值中的红色、绿色和蓝色部分。背景颜色取决于哪些切换按钮被按下。
self.col = QColor(0, 0, 0)
这是初始的黑色颜色值。
redb = QPushButton('Red', self) redb.setCheckable(True)
要创建一个切换按钮,我们创建一个 QPushButton
,然后通过调用 setCheckable
函数使其可选中。
redb.clicked.connect(self.setColor)
我们将 clicked
信号连接到我们自定义的函数。
source = self.sender()
我们使用 sender
函数获取被切换的按钮。
if source.text() == 'Red': self.col.setRed(val)
如果它是红色按钮,我们就相应地更新颜色的红色部分。
self.square.setStyleSheet('QFrame { background-color: %s }' % self.col.name())
我们使用样式表来更改背景颜色。样式表通过 setStyleSheet
函数进行更新。

在本文中,我们介绍了 PyQt 的 QPushButton
部件。
作者
列出所有 PyQt 教程。