PyQt5学习 (4)--QAbstractButton(下)
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(下)的更多相关文章
- PyQt5学习笔记-从主窗体打开一个子窗体
PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...
- Pyqt5学习笔记(一)
Python已有的GUI框架: Tkinter(python内嵌的GUI环境,使用TCL实现,易学易用,方便简单创GUI自带无需安装,适用于Unix.Windows和Mac系统组,在Tk8.0的后续版 ...
- 学习和研究下unity3d的四元数 Quaternion
学习和研究下unity3d的四元数 Quaternion 今天准备学习和研究下unity3d的四元数 Quaternion 四元数在电脑图形学中用于表示物体的旋转,在unity中由x,y,z,w 表示 ...
- OpenGL学习之windows下安装opengl的glut库
OpenGL学习之windows下安装opengl的glut库 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装. Windows环境下的GLUT下载地址:(大小约为15 ...
- PHP学习笔记----IIS7下安装配置php环境
原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...
- ios学习--iphone 实现下拉菜单
原文地址:ios学习--iphone 实现下拉菜单作者:sdglyuan00 #import @interface DropDown1 : UIView <</span>UITabl ...
- 2017-2018-1 20155228 《信息安全系统设计基础》第六周学习总结&课下作业
20155228 2017-2018-1 <信息安全系统设计基础>第六周学习总结&课下作业 教材学习内容总结 异常及其种类 异常可以分为四类:中断(interrupt) ,陷阱(t ...
- Docker学习之Centos7下安装
Docker学习之Centos7下安装 centos7 64下直接使用yum安装docker环境,步骤如下: 卸载旧版本docker sudo yum remove docker docker-com ...
- PyQt5 应用在 TeamViewer 下无法使用全屏模式
PyQt5 应用在 TeamViewer 下无法使用全屏模式 问题描述 使用 PyQt5 (版本为 5.7)中的 QtWebEngineView 构建的桌面应用,部署到远程机器(Windows 7 平 ...
- 六、Django学习之基于下划线的跨表查询
六.Django学习之基于下划线的跨表查询 一对一 正向查询的例子为 已知用户名,查询用户的电话号码.反向查询例子反之. 正向查询 其中下划线前的表示表名,无下划线的表示的是Author表 resul ...
随机推荐
- SQL查询 错误 [1843] [22008]: ORA-01843: 无效的月份
dbeaver客户端运行sql查询Oracle库报错. 正确示例: select count(*) from PRODUCTS WHERE CREATE_TIME > '15-7月-2021 ' ...
- 项目实训 DAY14
今天修改了一下PNN使之可以运行直接生成图片,而不是敲两段命令行.首先是使用python中subprocess启动新进程来达到命令行输命令的效果,即生成xx.pdf:再用os.unlink将中间品删除 ...
- Educational Codeforces Round 3 个人总结A-D
Educational Codeforces Round 3 A. USB Flash Drives 降序排序后,贪心,甚至不会爆longlong void solve() { int n,m; ci ...
- C 语言 scanf 格式化输入函数
C 语言 scanf 格式化输入函数 函数概要 scanf 函数从标准输入流中读取格式化字符串.与 printf 格式化输出函数相反,scanf 函数是格式化输入函数. 函数原型 #include & ...
- re相关正则表达式(re.sub、re.I 、re.S、re.M)
re.I 表示忽略大小写 re.S 表示全文匹配 re.M 表示全文拼配行尾段位的字符或者数字,影响^和$ re.sub 表示替换 使用方法: re.sub(pattern, repl, string ...
- uni-app 小程序在iOS系统无法长按复制问题
最近在使用uni-app开发移动端应用,有客户反映微信小程序版本在使用是无法长按复制问题,在安卓系统上却是正常的. 检查了下代码,对text标签都设置了selectable属性,寻找万能的度娘还是没有 ...
- Day03_Class01
用户交互Scanner Scanner对象 基本语法 Scanner sc = new Scanner(System.in); 通过Scanner类的next()与nextLine()方法获取输入的字 ...
- FCC 中级算法题 数组扁平化
Steamroller 对嵌套的数组进行扁平化处理.你必须考虑到不同层级的嵌套. Array.isArray() 思路: (1)遍历arr,如果arr[i]是数组,就重新调用本函数继续循环,然后和新数 ...
- Sentinel介绍与使用
https://blog.csdn.net/noaman_wgs/article/details/103328793
- Kafka源码阅读系列——Producer
Producer Kafka源码的exmaple模块有一个Producer类,继承了Thread类,构造方法会指定topic,是否异步,是否幂等,配置Kafka集群信息,初始化一个KafkaProdu ...