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 ...
随机推荐
- 修改element-ui 面包屑的样式
开发者模式,一层层的找啊 .el-breadcrumb__item{ .el-breadcrumb__inner{ &.is-link{ } } } 第二层的class 使用了& 如果 ...
- OPENSUSE网速慢
无线网卡是Broadcom 4313,刚安装完opensuse,网速只有60Kb左右. 添加packman私有驱动后,网速才正常起来.
- nuxt防止第三方ui多次打包
在nuxt.config.js中的 build:{ extend(){}, verdor:['element-ui'] }
- Spring系列之基于注解的容器配置7
目录 基于注解的容器配置 @Required(弃用) `@Autowired` `@Primary` @Qualifier 使用泛型作为自动装配限定符 `@Resource` `@Value` 使用` ...
- 01. JavaScript基础知识
一.JavaScript简介 JavaScript 是一门解释型编程语言,解释型编程语言指代码不需要手动编译,而是通过解释器边解释边执行.所以,要运行 JS,我们需要在计算机中安装 JS 的解释器 ...
- Web_Servlet和jsp页面数据交互,通过请求转发在jsp中显示数据
1.Servlet页面代码 /* 实现jsp页面和sevlet页面的信息交互 */ @WebServlet(urlPatterns = "/aa") public class Js ...
- raft算法,cap理论中的c是数据一致性,是通过raft算法,
raft算法中的两个重要概念,自旋时间,心跳时间, 领导,候选人,随从,通过日志同步.只要大多数随从同步成功,就算成功.
- Python第四章
import datetime # 定义一个列表 mot = ["今天星期一:\n坚持下去不是因为我坚强,而是因为我别无选择.", "今天星期二:\n含泪播 ...
- 狂神的学习笔记demo04
package com.company; public class demo04 { public static void main(String[] args){ int i=10;//二进制 in ...
- Adaboost分类器
Adaboost分类器 2019-08-31 非集成的机器学习算法就像古代皇帝一样,一个人说了算:集成学习算法类似于现在的国会,需要听取在会所有人的意见. Adaboost是一个集成学习算法,下面将会 ...