QAbstractBUtton:

  所有按钮控件的基类

  提供按钮的通用功能

  继承自QWidget

  属于抽象类别,不能直接去使用,必须借助于子类(除非你觉得子类不够用,想自定义一个按钮)

  大部分功能之前已经使用过,在这里只作简单介绍


文本设置:

setText(str) :设置按钮提示文本

text() : 获取按钮提示文本


图标设置:

点击查看代码
btn = QPushButton(window)
icon = QIcon("madeline.jpg")
size = QSize(50, 50) # Qsize格式
btn.setIconSize(size) # 设置图标大小
btn.setIcon(icon) # 设置图标
print(btn.icon()) # 获取图标
print(btn.iconSize()) # 获取图标大小

快捷键设置

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

点击查看代码
btn.setText("a&bc")  # 方法一:在快捷键字母前加“&”符号,在文本中不会显示,使用方法:Alt+快捷键字母
btn.setShortcut("Alt+G") # 方法二:这样设置,不区分大小写

自动重复

点击查看代码
btn.setAutoRepeat(True)  # 设置是否自动重复
print(btn.autoRepeat()) # 检测是否自动重复
btn.setAutoRepeatDelay(2000) # 设置自动重复开始时间(ms)
btn.setAutoRepeatInterval(1000) # 设置自动重复间隔(ms)
print(btn.autoRepeatDelay()) # 获取开始自动重复时间
print(btn.autoRepeatInterval()) # 获取自动重复时间间隔

状态设置

点击查看代码
push_btn = QPushButton(window)
push_btn.setText("这是按钮")
push_btn.move(100, 100)
push_btn.setStyleSheet("QPushButton:pressed {background-color: red;}")
radio_btn = QRadioButton(window)
radio_btn.setText("Radio")
radio_btn.move(100, 150)
checkbox = QCheckBox(window)
checkbox.setText("Checkbox")
checkbox.move(100, 200)
# 把三个按钮置为按下状态
push_btn.setDown(True)
print(push_btn.isDown()) # 检查是否按下
radio_btn.setDown(True)
checkbox.setDown(True)
push_btn.setCheckable(True) # 设置按钮是否可以被选中
print(push_btn.isCheckable()) # 检查是否可以被选中
print(radio_btn.isCheckable()) # 检查是否可以被选中
print(checkbox.isCheckable()) # 检查是否可以被选中 radio_btn.setChecked(True) # 设置按钮为被选中
push_btn.setChecked(True)
checkbox.setChecked(True) print(push_btn.isChecked()) # 检查按钮是否被选中
print(radio_btn.isChecked())
print(checkbox.isChecked()) def cao():
print("cao")
# push_btn.toggle()
radio_btn.toggle()
checkbox.toggle()
push_btn.setChecked(not push_btn.isChecked()) btn.pressed.connect(cao)
push_btn.setEnabled(False) # 设置按钮是否可用
radio_btn.setEnabled(False)
checkbox.setEnabled(False)

排他性

  如果同时存在多个按钮,而此时所有按钮又设置了排他性,则在同一时刻只能选中一个按钮

点击查看代码
btn.setAutoExclusive(True)  # 设置是否有排他性
print(btn.autoExclusive()) # 检查是否有排他性

  只有同级控件设置排他性才有效果

  对于QRadioButton,默认具有排他性,对于QCheckBox类型,默认不具有排他性


模拟点击:使用代码触发按钮点击

btn.click() # 模拟用户点击

btn.animateClick(2000) # 带有动画的模拟点击(动画显示时间:ms)


设置点击有效区域

点击查看代码
class Btn(QPushButton):
def hitButton(self, point):
print(point) # 相对于按钮左上角的坐标(实时)
if point.x() > self.width()/2:
return True # 传出信号
return False # 不传出 btn = Btn(window)
btn.move(100, 100)
btn.resize(200, 200)
btn.setText("点击")
btn.pressed.connect(lambda: print("按钮被点击了"))

可用信号

点击查看代码
btn = Btn(window)
btn.move(100, 100)
btn.resize(200, 200)
btn.setText("点击")
btn.setCheckable(True)
btn.pressed.connect(lambda: print("按钮被按下了"))
btn.released.connect(lambda: print("按钮被释放了"))
btn.clicked.connect(lambda value: print("按钮被点击了", value)) # value代表按钮是否被选中
btn.toggled.connect(lambda value: print("按钮选中状态发生改变", value)) # value代表按钮是否被选中\一般在单选框或复选框中使用

PyQt5学习 (4)--QAbstractButton(下)的更多相关文章

  1. PyQt5学习笔记-从主窗体打开一个子窗体

    PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...

  2. Pyqt5学习笔记(一)

    Python已有的GUI框架: Tkinter(python内嵌的GUI环境,使用TCL实现,易学易用,方便简单创GUI自带无需安装,适用于Unix.Windows和Mac系统组,在Tk8.0的后续版 ...

  3. 学习和研究下unity3d的四元数 Quaternion

    学习和研究下unity3d的四元数 Quaternion 今天准备学习和研究下unity3d的四元数 Quaternion 四元数在电脑图形学中用于表示物体的旋转,在unity中由x,y,z,w 表示 ...

  4. OpenGL学习之windows下安装opengl的glut库

    OpenGL学习之windows下安装opengl的glut库 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装.  Windows环境下的GLUT下载地址:(大小约为15 ...

  5. PHP学习笔记----IIS7下安装配置php环境

    原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...

  6. ios学习--iphone 实现下拉菜单

    原文地址:ios学习--iphone 实现下拉菜单作者:sdglyuan00 #import @interface DropDown1 : UIView <</span>UITabl ...

  7. 2017-2018-1 20155228 《信息安全系统设计基础》第六周学习总结&课下作业

    20155228 2017-2018-1 <信息安全系统设计基础>第六周学习总结&课下作业 教材学习内容总结 异常及其种类 异常可以分为四类:中断(interrupt) ,陷阱(t ...

  8. Docker学习之Centos7下安装

    Docker学习之Centos7下安装 centos7 64下直接使用yum安装docker环境,步骤如下: 卸载旧版本docker sudo yum remove docker docker-com ...

  9. PyQt5 应用在 TeamViewer 下无法使用全屏模式

    PyQt5 应用在 TeamViewer 下无法使用全屏模式 问题描述 使用 PyQt5 (版本为 5.7)中的 QtWebEngineView 构建的桌面应用,部署到远程机器(Windows 7 平 ...

  10. 六、Django学习之基于下划线的跨表查询

    六.Django学习之基于下划线的跨表查询 一对一 正向查询的例子为 已知用户名,查询用户的电话号码.反向查询例子反之. 正向查询 其中下划线前的表示表名,无下划线的表示的是Author表 resul ...

随机推荐

  1. vue项目中axios跨域设置

    最近项目中遇到一个问题,测试环境和线上环境需要调同一个接口(接口地址是线上的),本地开发的时候遇到了跨域的问题,刚开始用了fetch解决的,代码如下 方法一 step1:安装包node-fetch,然 ...

  2. powerbi 模板网站

    微软网站 https://community.powerbi.com/t5/Themes-Gallery/bd-p/ThemesGallery 中国区powerbi比赛网站 http://www.ch ...

  3. c++项目

    如题, 想搞1-2个c++项目把目前除了进程.线程管理的所有所学都用起来. 在自己设想中.

  4. 狐漠漠养成日记 Cp.00001 开始养成计划

    开始养成计划 今天是我开始这个"狐漠漠养成计划"的第一天(划掉). 看来是昨天出门前忘记保存了,昨天写的几百字内容全都没有了,今天其实已经是计划开始的第二天了. 因为昨天晚上出去喝 ...

  5. uniapp中使用AntV F6 + table表格插件使用

    首先看页面效果: AntV官网下载F6文件到项目中与uViewUI插件 <template> <view class="page"> <!-- 导航栏 ...

  6. 解决IOS上传竖向照片会旋转90度的问题

    // 解决IOS上传竖向照片会旋转90度的问题 rotate() { const that = this; that.imgOrientation = 1; let Orientation = nul ...

  7. Git Peer reports incompatible or unsupported protocol version

    今天用git克隆一个项目的时候出现标题中的错误 fatal: unable to access 'xxx.git/': Peer reports incompatible or unsupported ...

  8. Java中多态相关知识点

    多态 1.多态概述 同一个对象在不同时刻表现出的不同形态 多态的前提和体现: 有继承/实现关系 有方法重写 有父类引用指向子类对象(Animal a = new Cat();) 2.多态中的成员访问特 ...

  9. P3512 [POI2010]PIL-Pilots 单调队列的应用

    题目描述 给定n,k和一个长度为n的序列,求最长的最大值最小值相差不超过k的序列 输入格式 第一行两个有空格隔开的整数k(0<=k<=2000,000,000),n(1<=n< ...

  10. MySql 在 Linux 下的安装与基础配置

    使用版本:Mysql (5.7) Linux(CentOS 7.2) 1.安装 1)下载MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/ ...