pyqt5-按钮基类-QAbstractButton

QAbstractButton  是抽象类

from PyQt5.QtWidgets import QApplication, QWidget,QAbstractButton
import sys
from PyQt5.QtGui import QPainter,QPen,QColor

class Btn(QAbstractButton): #QAbstractButton是抽象类,必须子类化,[自定义按钮]
    def paintEvent(self, evt) :  #paintEvent必须有-绘制事件
        painter=QPainter(self)  #创建一个画家
        #参数 给画家一张纸,让画家在self上画
        pen=QPen(QColor(255,0,0),3)  #创建画笔
        painter.setPen(pen)  #给画家一根笔
        painter.drawText(20,20,self.text())  #画文本
        #参数3 返回对象的文本
        painter.drawEllipse(0, 0, self.width(), self.height())  # 画椭圆

class win(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(300,300)
        self.setWindowTitle('窗口')

        btn=Btn(self)
        btn.move(100,20)
        btn.setText('自定义按钮')

        btn.clicked.connect(self.A)

    def A(self):
        print('按钮点击事件')

if __name__=='__main__':
    app=QApplication(sys.argv)  #创建应用
    w=win()
    w.show()
    sys.exit(app.exec_())

文本设置或获取:

btn.setText('自定义按钮')     #设置文本

self.btn.text()      返回文本

图标:

setIcon(QIcon("resource/h1.png"))          设置图标

setIconSize(QSize(w, h))         设置图标大小

from PyQt5.QtCore import QSize   

icon()     获取图标

iconSize()     获取图标大小

设置快捷键:

方式1: 有提示文本的

self.btn.setText('&a按钮')         #快捷键是 ALT+a

方式2: 没有提示文本的

self.btn.setShortcut("Alt+G")      #快捷键是  ALT+G

shortcut()     返回快捷键 

自动重复:

比如用户用鼠标按住按钮时,会连续地发出信号

setAutoRepeat(bool)       设置自动重复

Ture   自动重复

setAutoRepeatInterval(毫秒)      设置自动重复检测间隔

setAutoRepeatDelay(毫秒)      设置初次检测延迟

autoRepeat()      获取是否自动重复

autoRepeatInterval()      获取自动重复检测间隔

autoRepeatDelay()      获取初次检测延迟

状态:

setDown(bool)         设置按钮, 是否被按下

True   按下

注意设置这个属性仅仅是改变钮的外观,不会发射任何信号

isDown()       是否按下按钮

isChecked()      是否选中了按钮

isCheckable()      按钮是否可以被选中

setCheckable(bool)       设置按钮, 是否可以被选中

setChecked(bool)       设置按钮, 是否被选中

toggle()    切换选中与非选中状态

isEnabled()    是否可用

setEnabled(bool)     设置是否可用

 排他性:

 比如:多个按钮中只能选择一个按钮

排他性 发生在同一级别也就是相同的父控件(同一分组中)的按钮中

autoExclusive()        是否自动排他

一般按钮都是False, 只有单选按钮是True

setAutoExclusive(bool)       设置是否自动排他

 

 模拟鼠标点击:

 btn.click()                      普通点击

animateClick(ms)        动画点击

参数  相当于鼠标按下后,再经过指定时间才释放

 设置点击有效区域:

 重写 hitButton(QPoint)       有效返回True      无效返回False

 视频教程:https://www.bilibili.com/video/av50026641/  

 可用信号:

 pressed()            鼠标按下信号

released()            鼠标释放:控件内松开鼠标     鼠标移出控件范围后

clicked()      控件内按下+控件内释放

会向槽函数传递一个布尔值(按钮是否被选中)

toggled()      切换信号-选中状态发生变化时发出信号     (一般在单选框或者复选框中使用)

只有把按钮设置为可以被选中才会发出这个信号

会向槽函数传递一个布尔值(按钮是否被选中)

天子骄龙

原文地址:https://www.cnblogs.com/liming19680104/p/10729116.html