继承关系
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b0a5fbb3e8586bc85faa1cdb9e188669.png)
学习计划
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/58893bcc329bb38989edb93302f08577.png)
常用按钮信号
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b2df99c14af593ee697f0b870fb29019.png)
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能测试-抽象类")
window.resize(500, 500)
btn = QPushButton(window)
btn.setCheckable(True)
btn.pressed.connect(lambda : print("按钮被按下了"))
btn.released.connect(lambda : print("按钮鼠标被释放了"))
btn.clicked.connect(lambda value: print("按钮被点击", value))
btn.toggled.connect(lambda value: print("按钮选中状态发生了改变", value))
window.show()
sys.exit(app.exec_())
功能作用
1.提示文本
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5f6f755665d67357c91b46bdacd97c63.png)
应用场景
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能测试-抽象类")
window.resize(500, 500)
btn = QPushButton(window)
btn.setText("1")
def plus_one():
num = int(btn.text()) + 1
btn.setText(str(num))
btn.pressed.connect(plus_one)
window.show()
sys.exit(app.exec_())
2.图标相关
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bf3a787b2c3315f81d76c138d2deea09.png)
应用场景
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能测试-抽象类")
window.resize(500, 500)
btn = QPushButton(window)
icon = QIcon("close.png")
btn.setIcon(icon)
size = QSize(50, 50)
btn.setIconSize(size)
print(btn.icon())
print(btn.iconSize())
window.show()
sys.exit(app.exec_())
3.设置快捷键
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c33f60451c67b5fdad6b4dc5ff82db0e.png)
应用场景
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能测试-抽象类")
window.resize(500, 500)
btn = QPushButton(window)
btn.pressed.connect(lambda :print("按钮被点击了"))
btn.setText("&abc")
btn.setShortcut("Alt+a")
window.show()
sys.exit(app.exec_())
4.自动重复检测
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7df4c6c1fb90e7f262d2328ca69654c4.png)
应用场景
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能测试-抽象类")
window.resize(500, 500)
btn = QPushButton(window)
btn.pressed.connect(lambda :print("按钮被点击了"))
btn.setAutoRepeat(True)
btn.setAutoRepeatDelay(2000)
btn.setAutoRepeatInterval(1000)
print("是否开启自动重复",btn.autoRepeat())
print("重复执行间隔",btn.autoRepeatInterval())
print("初次检测延迟时间",btn.autoRepeatDelay())
window.show()
sys.exit(app.exec_())
5.判断按键状态
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/de9ff9f5a027183728d708d28094986a.png)
应用场景
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能测试-抽象类")
window.resize(500, 500)
btn = QPushButton(window)
push_button = QPushButton(window)
push_button.setText("这是QPushButton")
push_button.move(100, 100)
radio_button = QRadioButton(window)
radio_button.setText("这是一个radio")
radio_button.move(100, 150)
checkbox = QCheckBox(window)
checkbox.setText("这是checkbox")
checkbox.move(100, 200)
push_button.setStyleSheet("QPushButton:pressed {background-color: red;}")
window.show()
sys.exit(app.exec_())
6.按键排他性
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fea5add1ea5289ceef0d143447401141.png)
应用场景
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能测试-抽象类")
window.resize(500, 500)
for i in range(0, 3):
btn = QCheckBox(window)
btn.setText("btn" + str(i))
btn.move(50 * i, 50 * i)
btn.setAutoExclusive(True)
print("是否设置排他性",btn.autoExclusive())
print("是否可以被选中",btn.isCheckable())
window.show()
sys.exit(app.exec_())
7.按键点击
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3721b717970c5bd70286046d50a5edda.png)
应用场景
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能测试-抽象类")
window.resize(500, 500)
btn = QPushButton(window)
btn.setText("这是按钮")
btn.move(200, 200)
btn.pressed.connect(lambda :print("点击了这个按钮"))
window.show()
sys.exit(app.exec_())
8.设置按键有效区域
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/818726a1819dc996e812040c245fddf2.png)
应用场景
- 设置如下图的圆中为按钮有效区域
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/927d23c3402d8c8b0f8ebb2bb2367390.png)
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能测试-抽象类")
window.resize(500, 500)
class Btn(QPushButton):
def hitButton(self, point):
yuanxin_x = self.width() / 2
yuanxin_y = self.height() / 2
hit_x = point.x()
hit_y = point.y()
import math
distance = math.sqrt(math.pow(hit_x - yuanxin_x, 2) + math.pow(hit_y - yuanxin_y, 2))
if distance < self.width() / 2:
return True
return False
def paintEvent(self, evt):
super().paintEvent(evt)
painter = QPainter(self)
painter.setPen(QPen(QColor(100, 150, 200), 6))
painter.drawEllipse(self.rect())
btn = Btn(window)
btn.move(100, 100)
btn.setText("点击")
btn.resize(200, 200)
btn.pressed.connect(lambda : print("按钮被按下了"))
window.show()
sys.exit(app.exec_())