PyQt5 基本语法(二):按钮控件

1、按钮控件

1.1 QAbstractButton

1.1.1 简介

1.1.1.1 描述
  • 所有按钮控件的基类
  • 提供按钮的通用功能
  • 其继承自 QWidget
  • 其为 C++ 中的虚继承类,无法实例化对象,只有子类化,才能实例化对象
1.1.1.2 自定义按钮
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys


class Btn(QAbstractButton):
    # 子类化,使得可以实例化对象,同时要重写paintEvent函数
    def paintEvent(self, evt):
        # 这个可以自定义一个按钮
        # print("绘制按钮")
        # 创建一个画家,self 是纸张
        painter = QPainter(self)
        # 实例化一支笔
        pen = QPen(QColor(0, 0, 0), 6)  # 颜色,和画笔大小
        # 给画家一支笔
        painter.setPen(pen)
        # 画画
        painter.drawText(20, 20, self.text())  # 将字写在按钮上面
        painter.drawEllipse(0, 0, 100, 100)  # 画一个椭圆


app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)
btn = Btn(w)
btn.setText("QAbstractButton")
btn.pressed.connect(lambda: print("自定义按钮被按下了"))
w.setVisible(True)  # 设置为可见
sys.exit(app.exec_())

1.1.2 提示文本

案例,创建一个按钮,初始文本为1

要求:

  • 每点击一次,则让文本数字加1

涉及知识点:

  • 按钮控件的创建
  • 按钮文本的设置和获取
  • 按钮点击信号的监听
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)
btn = QPushButton(w)
btn.setText("1")  # 设置初始文本


def btn_():
    count = int(btn.text())
    count += 1  # 加一功能
    btn.setText(str(count))


btn.pressed.connect(btn_)  # 监听事件
w.setVisible(True)  # 设置为可见
sys.exit(app.exec_())

1.1.3 图标相关

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys
"""
setIcon(QIcon)  # 设置图标
setIconSize(ASize)  # 设置图标大小
icon()  # 获取图标
iconSize()  # 获取图标大小 
"""
app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)
btn = QPushButton(w)
btn.setText("Button")  # 设置初始文本
icon = QIcon(r"D:\35005\Pictures\Screenshots\微信图片_20220302175157.jpg")  # 设置图片
btn.setIcon(icon)  # 设置图标
size = QSize(20, 20)  # 输入图标大小
btn.setIconSize(size)  # 设置图标大小
w.setVisible(True)  # 设置为可见
sys.exit(app.exec_())

1.1.4 设置快捷键

作用:

  • 通过指定的快捷键,触发按钮的点击

方式:

  1. 有提示文本:如果提示文本包含 & 符号,则QAbstractButton会自动创建快捷键
  2. 无提示文本:setShortcut("Alt + G")
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)
btn = QPushButton(w)
btn.clicked.connect(lambda: print("按钮被按下"))
# btn.setText("a&bc")  # 有文本创建,快捷键为 Alt + b
btn.setText("点我")
btn.setShortcut("Alt+G")  # 无文本的创建方法
w.show()
sys.exit(app.exec_())

1.1.5 按钮自动重复

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys
"""
# 当一直摁下不松开触发重复
setAutoRepeat(bool)  # 设置自动重复
setAutoRepeatInterval(ms)  # 设置自动重复检测间隔
setAutoRepeatDelay(ms)  # 设置初次检测延迟
autoRepeat()  # 获取是否自动重复
autoRepeatInterval()  # 获取自动重复检测间隔
autoRepeatDelay()  # 获取初次检测延迟时长
"""
app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)
btn = QPushButton(w)
btn.setText("点我")
btn.clicked.connect(lambda: print("点击一次"))
btn.setAutoRepeat(True)  # 开启重复
btn.setAutoRepeatInterval(1000)  # 设置 1 秒间隔
btn.setAutoRepeatDelay(2000)  # 摁下两秒后触发重复
# 获取值
print(btn.autoRepeat())
print(btn.autoRepeatInterval())
print(btn.autoRepeatDelay())
w.show()
sys.exit(app.exec_())

1.1.6 状态检测

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys
"""
isDown()  # 是否按下按钮
setDown(bool)  # 设置按钮是否被按下
isChecked()  # 是否选中了按钮
setChecked()  # 设置按钮是否被选中
isCheckable()  # 按钮是否可以被选中
setCheckable(bool)  # 设置按钮是否可以被选中
toggle()  # 切换选中与非选中状态
# 继承与QWidget中能使用的状态
isEnabled()  # 判断按钮是否能点击
setEnabled(bool)  # 设置按钮是否能点击
"""
app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)
btn = QPushButton(w)
btn.setText("QPushButton")
btn.move(50, 0)
btn2 = QRadioButton(w)
btn2.setText("QRadioButton")
btn2.move(50, 50)
btn3 = QCheckBox(w)
btn3.setText("QCheckBox")
btn3.move(50, 100)
# 把三个按钮全部置为按下状态
btn.setStyleSheet("QPushButton:pressed {background-color: red;}")
btn.setDown(True)
btn2.setChecked
  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveKenny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值