PyQt5—QPushButton 功能 API 学习笔记
第二章 控件学习
QPushButton 是 PyQt5 中用于创建按钮的类,是 GUI 界面中最常用的控件之一。下面从基础到高级,逐步讲解 QPushButton 的功能和用法。
一、基础入门
首先来看一个最简单的例子:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButtonapp = QApplication(sys.argv)window = QWidget()
window.setWindowTitle('QPushButton示例')
window.setGeometry(100, 100, 300, 200)button = QPushButton('点击我', window)
button.move(100, 100)window.show()
sys.exit(app.exec_())
这个代码创建了一个简单的窗口,里面有一个按钮。关键代码解释:
QPushButton('点击我', window)
- 创建一个按钮,文本为 "点击我",父窗口为 windowbutton.move(100, 100)
- 设置按钮在窗口中的位置
二、按钮事件处理
按钮的核心功能是点击后触发事件,下面是一个带事件处理的例子:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabelclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('按钮事件示例')self.setGeometry(100, 100, 300, 200)self.label = QLabel('未点击', self)self.label.move(100, 50)self.button = QPushButton('点击我', self)self.button.move(100, 100)self.button.clicked.connect(self.on_click)self.show()def on_click(self):self.label.setText('按钮被点击了!')self.label.adjustSize()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())
这个例子中:
- 创建了一个继承自 QWidget 的窗口类
self.button.clicked.connect(self.on_click)
- 将按钮的 clicked 信号连接到 on_click 方法- 当按钮被点击时,on_click 方法会被调用,更新标签文本
三、按钮样式设置
QPushButton 支持丰富的样式定制,下面是一个设置按钮样式的例子:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButtonapp = QApplication(sys.argv)window = QWidget()
window.setWindowTitle('按钮样式示例')
window.setGeometry(100, 100, 300, 200)button = QPushButton('样式按钮', window)
button.setStyleSheet("""QPushButton {background-color: #4CAF50;border: none;color: white;padding: 10px 20px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px 2px;cursor: pointer;border-radius: 10px;}QPushButton:hover {background-color: #45a049;}QPushButton:pressed {background-color: #3e8e41;}
""")
button.move(80, 80)window.show()
sys.exit(app.exec_())
这里使用了 Qt 的样式表 (stylesheet):
- 设置了按钮的背景色、边框、文字颜色等基本样式
- 使用:hover 和:pressed 伪状态设置了鼠标悬停和按下时的样式变化
- 通过 border-radius 实现了圆角效果
四、按钮状态管理
按钮有多种状态,可以通过代码控制,下面是一个示例:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabelclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('按钮状态示例')self.setGeometry(100, 100, 300, 250)self.label = QLabel('按钮状态: 正常', self)self.label.move(80, 30)# 普通按钮self.btn1 = QPushButton('普通按钮', self)self.btn1.move(80, 70)# 可勾选按钮self.btn2 = QPushButton('可勾选按钮', self)self.btn2.setCheckable(True)self.btn2.move(80, 110)self.btn2.clicked.connect(self.on_toggle)# 禁用按钮self.btn3 = QPushButton('禁用按钮', self)self.btn3.move(80, 150)self.btn3.setEnabled(False)# 切换按钮状态的按钮