一. 继承关系
二. 功能
1. 创建按钮控件,配置快捷键
# 创建按钮
1. QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
2. QPushButton(const QString &text, QWidget *parent = nullptr)
3. QPushButton(QWidget *parent = nullptr)
# 给按钮搭配快捷键
const QString &text中 快捷键:Alt+&后面跟的第一个字母
1. &download 快捷键为Alt+d
2. down&load 快捷键为Alt+l
3. 显示实际的&符号,用&&转义,例如down&&load 没有快捷键,显示为down&load
import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QVBoxLayout
from PyQt5.QtGui import QIcon
def download():
print("正在下载----")
def back():
print("取消----")
def warn():
print("警告")
if __name__ == '__main__':
app = QApplication(sys.argv)
# 创建窗口
w = QWidget()
# 设置窗口标题
w.setWindowTitle("第一个PyQt")
# 设置窗口的大小
w.resize(300,300)
# 创建垂直布局,返回布局器
layout = QVBoxLayout()
# 创建按钮
b1 = QPushButton(QIcon(R"D:\PyQt5\01\对号.png"),"&Download",w)
b2 = QPushButton(QIcon(R"D:\PyQt5\01\删除.png"),"&back",w)
b3 = QPushButton(QIcon(R"D:\PyQt5\01\感叹号.png"),"&warning",w)
# 连接信号
b1.clicked.connect(download)
b2.clicked.connect(back)
b3.clicked.connect(warn)
# 将按钮添加到布局器
layout.addWidget(b1)
layout.addWidget(b2)
layout.addWidget(b3)
# 将布局器应用到窗口
w.setLayout(layout)
# 展示窗口
w.show()
# 程序进行循环等待状态
app.exec()
2. 运行时更改按钮外观
import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QVBoxLayout
from PyQt5.QtGui import QIcon
def change1():
b1.setText("解锁")
b1.setIcon(QIcon(R"D:\PyQt5\02\解锁.png"))
def change2():
b1.setText("上锁")
b1.setIcon(QIcon(R"D:\PyQt5\02\上锁.png"))
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QWidget()
# 设置窗口标题
w.setWindowTitle("第一个PyQt")
w.resize(300,300)
layout = QVBoxLayout()
b1 = QPushButton(QIcon(R"D:\PyQt5\02\上锁.png"),"上锁",w)
b1.pressed.connect(change1)
b1.released.connect(change2)
layout.addWidget(b1)
w.setLayout(layout)
# 展示窗口
w.show()
# 程序进行循环等待状态
app.exec()
3. 自动默认按钮
import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QVBoxLayout
from PyQt5.QtGui import QIcon
def download():
print("正在下载----")
def back():
print("取消----")
def warn():
print("警告")
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QWidget()
# 设置窗口标题
w.setWindowTitle("第一个PyQt")
w.resize(300,300)
layout = QVBoxLayout()
b1 = QPushButton(QIcon(R"D:\PyQt5\01\对号.png"),"&Download",w)
b2 = QPushButton(QIcon(R"D:\PyQt5\01\删除.png"),"&back",w)
b3 = QPushButton(QIcon(R"D:\PyQt5\01\感叹号.png"),"&warning",w)
b2.setAutoDefault(True)
print(b1.autoDefault())
print(b2.autoDefault())
print(b3.autoDefault())
b1.setFlat(True)
b2.setFlat(True)
b1.clicked.connect(download)
b2.clicked.connect(back)
b3.clicked.connect(warn)
layout.addWidget(b1)
layout.addWidget(b2)
layout.addWidget(b3)
w.setLayout(layout)
# 展示窗口
w.show()
# 程序进行循环等待状态
app.exec()
三. 官方文档
QPushButton Class | Qt Widgets 5.15.15