- PyQt5 教程
- PyQt5 - 首页
- PyQt5 - 简介
- PyQt5 - 新特性
- PyQt5 - Hello World
- PyQt5 - 主要类
- PyQt5 - 使用 Qt Designer
- PyQt5 - 信号与槽
- PyQt5 - 布局管理
- PyQt5 - 基本控件
- PyQt5 - QDialog 类
- PyQt5 - QMessageBox
- PyQt5 - 多文档界面
- PyQt5 - 拖放
- PyQt5 - 数据库处理
- PyQt5 - 绘图 API
- PyQt5 - BrushStyle 常量
- PyQt5 - QClipboard
- PyQt5 - QPixmap 类
- PyQt5 有用资源
- PyQt5 - 快速指南
- PyQt5 - 有用资源
- PyQt5 - 讨论
PyQt5 - QPushButton 控件
在任何 GUI 设计中,命令按钮是最重要和最常用的控件。带有“保存”、“打开”、“确定”、“是”、“否”和“取消”等标题的按钮对任何计算机用户都很熟悉。在 PyQt API 中,QPushButton 类对象表示一个按钮,单击该按钮可以编程为调用某个函数。
QPushButton 类继承其核心功能自 QAbstractButton 类。它呈矩形,其表面可以显示文本标题或图标。
以下是 QPushButton 类的一些最常用的方法:
| 序号 | 方法和描述 |
|---|---|
| 1 |
setCheckable() 如果设置为 true,则识别按钮的按下和释放状态 |
| 2 |
toggle() 在可选中状态之间切换 |
| 3 |
setIcon() 显示由图像文件的像素图组成的图标 |
| 4 |
setEnabled() 设置为 false 时,按钮将被禁用,因此单击它不会发出信号 |
| 5 |
isChecked() 返回按钮的布尔状态 |
| 6 |
setDefault() 将按钮设置为默认按钮 |
| 7 |
setText() 以编程方式设置按钮的标题 |
| 8 |
text() 检索按钮的标题 |
示例
四个 QPushButton 对象设置了一些上述属性。该示例以面向对象的形式编写,因为需要将事件的来源作为参数传递给槽函数。
四个 QPushButton 对象被定义为类中的实例变量。第一个按钮 b1 通过以下语句转换为切换按钮:
self.b1.setCheckable(True) self.b1.toggle()
此按钮的 Clicked 信号连接到一个成员方法 btnstate(),该方法通过检查 isChecked() 属性来识别按钮是按下还是释放。
def btnstate(self):
if self.b1.isChecked():
print "button pressed"
else:
print "button released"
第二个按钮 b2 在其表面显示一个图标。setIcon() 方法将任何图像文件的像素图对象作为参数。
b2.setIcon(QIcon(QPixmap("python.gif")))
按钮 b3 通过使用 setEnabled() 方法设置为禁用:
b3.setEnabled(False)
按钮 b4 通过 setDefault() 方法设置为默认按钮。通过在标题前添加 & 来创建其标题的快捷键(&Default)。因此,使用键盘组合 Alt+D 将调用连接的槽方法。
按钮 b1 和 b4 连接到 whichbtn() 槽方法。由于该函数旨在检索被单击按钮的标题,因此应将按钮对象作为参数传递。这是通过使用 lambda 函数实现的。
例如:
b4.clicked.connect(lambda:self.whichbtn(self.b4))
完整的代码如下:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
layout = QVBoxLayout()
self.b1 = QPushButton("Button1")
self.b1.setCheckable(True)
self.b1.toggle()
self.b1.clicked.connect(lambda:self.whichbtn(self.b1))
self.b1.clicked.connect(self.btnstate)
layout.addWidget(self.b1)
self.b2 = QPushButton()
self.b2.setIcon(QIcon(QPixmap("python.gif")))
self.b2.clicked.connect(lambda:self.whichbtn(self.b2))
layout.addWidget(self.b2)
self.setLayout(layout)
self.b3 = QPushButton("Disabled")
self.b3.setEnabled(False)
layout.addWidget(self.b3)
self.b4 = QPushButton("&Default")
self.b4.setDefault(True)
self.b4.clicked.connect(lambda:self.whichbtn(self.b4))
layout.addWidget(self.b4)
self.setWindowTitle("Button demo")
def btnstate(self):
if self.b1.isChecked():
print "button pressed"
else:
print "button released"
def whichbtn(self,b):
print "clicked button is "+b.text()
def main():
app = QApplication(sys.argv)
ex = Form()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
输出
以上代码产生以下输出。
clicked button is Button1 button released clicked button is Button1 button pressed clicked button is &Default