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代表按钮是否被选中\一般在单选框或复选框中使用
复制代码 来源:https://www.cnblogs.com/sathiala/p/17269390.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|
|
|
发表于 2023-3-29 21:00:43
举报
回复
分享
|
|
|
|