首页 > 其他分享 >PyQt5学习 (4)--QAbstractButton(下)

PyQt5学习 (4)--QAbstractButton(下)

时间:2023-03-29 21:22:27浏览次数:47  
标签:QAbstractButton -- PyQt5 push 点击 按钮 print btn True

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")  # 方法二:这样设置,不区分大小写

自动重复
image

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

状态设置
image

点击查看代码
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代表按钮是否被选中\一般在单选框或复选框中使用

标签:QAbstractButton,--,PyQt5,push,点击,按钮,print,btn,True
From: https://www.cnblogs.com/sathiala/p/17269390.html

相关文章

  • day3
    1、104二叉树的最大深度559n叉树的最大深度104二叉树的最大深度递归法本题可以使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的......
  • 3.29软件工程学习总结
    今天继续小组服务外包杯的项目前端页面开发,在页面展示上尝试了很多种方法和形式,页面的连接上出现了一些问题,后续完成了所有页面的制作后再去解决这个问题。下面是今天......
  • Zookeep Leader选举源码
    Leader选举的核心底层原理可以很简单地概述为:核心参数是logicClock逻辑时钟、epoch、事务次数、myid,核心流程为:先对比logicClock,再对比epoch,其次对比事务次数,最后对......
  • js 给select 绑定改变后的事件onchange
     当id为action的select标签发生改变时,执行handleChange()方法selectid="action"onchange="handleChange()"<!DOCTYPEhtml><htmllang="en"><head><meta......
  • jvm2
    目录Java运行时参数分析GC日志Java运行时参数官网:jdk8:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.htmljdk11:https://docs.oracle.com/en/java......
  • Java switch case语句
    Javaswitchcase语句switchcase语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。语法:switch(expression){casevalue://语句break;//可......
  • 深入理解异地多活
    #系统性能三指标要想理解异地多活,我们需要从架构设计的原则说起现如今,我们开发一个软件系统,对其要求越来越高,一个好的软件架构应该遵循以下3个原则:1.高性能2.高可用3.......
  • c++实战开发程序
    非常感谢您的进一步提问,以下是一个对于实战开发小程序的更具体的建议:第1周实战开发小程序建议:写一个简单的计算器程序,要求包含加、减、乘、除四种基本运算,并进行错误处理......
  • 鬼谷子猜数
    很久之前写的,搬过来。一个与OI本身并木有什么联系的问题,只是感觉很有趣而且验证过程用到了计算机(主要是懒得手算),便花一点点时间来写一下。问题一天,鬼谷子随意从2-99中选......
  • 02web服务器3.29
    web服务器技术ASP微软,国内最早出的就是asp在html里嵌入VB的脚本,asp+com;在asp开发中,基本一个页面都有几千行,页面及其混乱。维护成本高c#lls<h1>......