翼度科技»论坛 编程开发 python 查看内容

PyQt5学习 (4)--QAbstractButton

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
QAbstractBUtton:
  所有按钮控件的基类
  提供按钮的通用功能
  继承自QWidget
  属于抽象类别,不能直接去使用,必须借助于子类(除非你觉得子类不够用,想自定义一个按钮)
  大部分功能之前已经使用过,在这里只作简单介绍
文本设置:
setText(str) :设置按钮提示文本
text() : 获取按钮提示文本
图标设置:
点击查看代码
  1. btn = QPushButton(window)
  2. icon = QIcon("madeline.jpg")
  3. size = QSize(50, 50)  # Qsize格式
  4. btn.setIconSize(size)  # 设置图标大小
  5. btn.setIcon(icon)  # 设置图标
  6. print(btn.icon())  # 获取图标
  7. print(btn.iconSize())  # 获取图标大小
复制代码
快捷键设置
  通过指定的快捷键,触发按钮的点击
点击查看代码
  1. btn.setText("a&bc")  # 方法一:在快捷键字母前加“&”符号,在文本中不会显示,使用方法:Alt+快捷键字母
  2. btn.setShortcut("Alt+G")  # 方法二:这样设置,不区分大小写
复制代码
自动重复

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

点击查看代码
  1. push_btn = QPushButton(window)
  2. push_btn.setText("这是按钮")
  3. push_btn.move(100, 100)
  4. push_btn.setStyleSheet("QPushButton:pressed {background-color: red;}")
  5. radio_btn = QRadioButton(window)
  6. radio_btn.setText("Radio")
  7. radio_btn.move(100, 150)
  8. checkbox = QCheckBox(window)
  9. checkbox.setText("Checkbox")
  10. checkbox.move(100, 200)
  11. # 把三个按钮置为按下状态
  12. push_btn.setDown(True)
  13. print(push_btn.isDown())  # 检查是否按下
  14. radio_btn.setDown(True)
  15. checkbox.setDown(True)
  16. push_btn.setCheckable(True)  # 设置按钮是否可以被选中
  17. print(push_btn.isCheckable())  # 检查是否可以被选中
  18. print(radio_btn.isCheckable())  # 检查是否可以被选中
  19. print(checkbox.isCheckable())  # 检查是否可以被选中
  20. radio_btn.setChecked(True)  # 设置按钮为被选中
  21. push_btn.setChecked(True)
  22. checkbox.setChecked(True)
  23. print(push_btn.isChecked())  # 检查按钮是否被选中
  24. print(radio_btn.isChecked())
  25. print(checkbox.isChecked())
  26. def cao():
  27.     print("cao")
  28.     # push_btn.toggle()
  29.     radio_btn.toggle()
  30.     checkbox.toggle()
  31.     push_btn.setChecked(not push_btn.isChecked())
  32. btn.pressed.connect(cao)
  33. push_btn.setEnabled(False)  # 设置按钮是否可用
  34. radio_btn.setEnabled(False)
  35. checkbox.setEnabled(False)
复制代码
排他性
  如果同时存在多个按钮,而此时所有按钮又设置了排他性,则在同一时刻只能选中一个按钮
点击查看代码
  1. btn.setAutoExclusive(True)  # 设置是否有排他性
  2. print(btn.autoExclusive())  # 检查是否有排他性
复制代码
  只有同级控件设置排他性才有效果  对于QRadioButton,默认具有排他性,对于QCheckBox类型,默认不具有排他性
模拟点击:使用代码触发按钮点击
btn.click() # 模拟用户点击
btn.animateClick(2000)  # 带有动画的模拟点击(动画显示时间:ms)
设置点击有效区域
点击查看代码
  1. class Btn(QPushButton):
  2.     def hitButton(self, point):
  3.         print(point)  # 相对于按钮左上角的坐标(实时)
  4.         if point.x() > self.width()/2:
  5.             return True  # 传出信号
  6.         return False  # 不传出
  7. btn = Btn(window)
  8. btn.move(100, 100)
  9. btn.resize(200, 200)
  10. btn.setText("点击")
  11. btn.pressed.connect(lambda: print("按钮被点击了"))
复制代码
可用信号
点击查看代码
  1. btn = Btn(window)
  2. btn.move(100, 100)
  3. btn.resize(200, 200)
  4. btn.setText("点击")
  5. btn.setCheckable(True)
  6. btn.pressed.connect(lambda: print("按钮被按下了"))
  7. btn.released.connect(lambda: print("按钮被释放了"))
  8. btn.clicked.connect(lambda value: print("按钮被点击了", value))  # value代表按钮是否被选中
  9. btn.toggled.connect(lambda value: print("按钮选中状态发生改变", value))  # value代表按钮是否被选中\一般在单选框或复选框中使用
复制代码
来源:https://www.cnblogs.com/sathiala/p/17269390.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具