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()      切换信号-选中状态发生变化时发出信号     (一般在单选框或者复选框中使用)

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

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

天子骄龙

pyqt5-按钮基类-QAbstractButton的更多相关文章

  1. 八、pyqt5按钮类控件——QPushButton、QRadioButton、QCheckBox

    pyqt5中常用的按钮类控件有QPushButton.QRadioButton.QCheckBox.QToolButton等.这些按钮类的基类都是QAbstracButton类.所以这些类有部分方法是 ...

  2. iOS控制器之基类设计

    题记 在进入新公司后.经过这一个月的重构项目,终于把项目做到了个人相对满意的程度(还有一种不满意的叫老板的需求,提过多次意见也没用= =!).在这次重构中按照以前的思路设计出了个人觉得比较适用的一个基 ...

  3. Android 自定义Activity基类与TitleBar

    我们在开发App的时候有时候碰到多个界面有一个共同点的时候,比如,都有相同的TitleBar,并且TitleBar可以设置显示的文字.TitleBar上的点击事件,如果给每一个Activity都写一遍 ...

  4. Android 开发技巧 - Android 6.0 以上权限大坑和权限检查基类封装

    简单介绍 关于运行时权限的说法,早在Google发布android 6.0的时候,大家也听得蛮多的.从用户的角度来讲,用户是受益方,更好的保护用户的意思,而对于开发者来说,无疑增加了工作量. 对于6. ...

  5. 基于MVC4+EasyUI的Web开发框架形成之旅--基类控制器CRUD的操作

    在上一篇随笔中,我对Web开发框架的总体界面进行了介绍,其中并提到了我的<Web开发框架>的控制器的设计关系,Web开发框架沿用了我的<Winform开发框架>的很多架构设计思 ...

  6. QWidget QMainWindow QDialog 三个基类的区别

    Qt类是一个提供所需的像全局变量一样的大量不同的标识符的命名空间.通常情况下,你可以忽略这个类.QObject和一些其它类继承了它,所以在这个Qt命名空间中定义的所有标识符通常情况下都可以无限制的使用 ...

  7. 【iOS】UIViewController基类的实现

    继承是面向对象编程语言的三大特性之一,写好基类会给App的开发带来极大的方便.在iOS开发中,一般一个页面就对应一个ViewController,ViewController在开发中用的也很多,写一个 ...

  8. 谈谈Ext JS的组件——组件基类:Ext.Component

    概述 Ext.Component是所有Ext组件的基类,这在Ext.Component的API中第一句话就提到了.然后第二段说明了它包含的基本功能:隐藏/显示.启用/禁用以及尺寸控制等.除了以上这些基 ...

  9. 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中的元素

    [源码下载] 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中 ...

随机推荐

  1. Redis数据过期策略详解

    http://www.cnblogs.com/xuliangxing/p/7151812.html 本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用 ...

  2. (golang)HTTP基本认证机制及使用gocolly登录爬取

    内网有个网页用了HTTP基本认证机制,想用gocolly爬取,不知道怎么登录,只好研究HTTP基本认证机制 参考这里:https://www.jb51.net/article/89070.htm 下面 ...

  3. copy 和 deepcopy的区别

    import copy a = [1, 2, 3, 4, ['a', 'b']] b = a # 引用,除非直接给a重新赋值,否则a变则b变,b变则a变 c = copy.copy(a) # 浅复制, ...

  4. AtCoDeerくんと選挙速報 / AtCoDeer and Election Report AtCoder - 2140 (按比例扩大)

    Problem Statement AtCoDeer the deer is seeing a quick report of election results on TV. Two candidat ...

  5. Linux Redhat 7.6 操作系统 下载安装详解

    redhat 系统镜像分享 [百度网盘分享] (https://pan.baidu.com/s/1ALM6v1dAtPwmEt2tmyTghg ) 提取码:2i4o redhat 7.6版本安装详解 ...

  6. HTTP协议中的短轮询、长轮询、长连接和短连接,看到一篇文章有感

    关于短轮询.长轮询 短轮询主要是前端实现,JS写个死循环,不停的去请求服务器中的库存量是多少,然后刷新到这个页面当中,这其实就是所谓的短轮询. 长轮询主要取决于服务器,在长轮询中,服务器如果检测到数据 ...

  7. ABP中的拦截器之AuditingInterceptor

    在上面两篇介绍了ABP中的ValidationInterceptor之后,我们今天来看看ABP中定义的另外一种Interceptor即为AuditingInterceptor,顾名思义就是一种审计相关 ...

  8. QT出现应用程序无法正常启动0xc000007b的错误

    最近做了一个成绩管理系统,打包好后,运行他的exe可执行文件时,出现了如下图的错误提示: 在网上查阅了很多资料,其中有篇文章给了我很大的启示和帮助,文章地址http://www.cnblogs.com ...

  9. JS Array.reduce 对象属性累加

    Array reduce() 方法  ,无非就是 计算数组元素 相加后的总和 ,看网上给的Demo 全是  [1,2,3,4,6].reduce 这种基本用法, 本次我将使用 reduce 实现 数组 ...

  10. [BZOJ 3745] [COCI 2015] Norma

    Description 给定一个正整数序列 \(a_1,a_2,\cdots,a_n\),求 \[ \sum_{i=1}^n\sum_{j=i}^n(j-i+1)\min(a_i,a_{i+1},\c ...