Python GUI编程网 > PyQt5控件_PyQt5控件方法大全 > QAbstractButton常用功能函数大全和使用方法总结
python教程

QAbstractButton常用功能函数大全和使用方法总结

发布博客:2022年11月8日 21:24
阅读:38
作者:Python GUI编程网

前文中我们介绍过QAbstractButton汇集了所有按钮控件的通用功能,主要包含文本提示、图标、快捷键设置、自动重复、状态、排他性、点击、有效区域和模拟点击等。这里我们有两种方案选择,一种是新建一个子类继承QAbstractButton,另一种就是直接使用PyQt5给我们提供的按钮子类。

前文中我们介绍过QAbstractButton汇集了所有按钮控件的通用功能,主要包含文本提示、图标、快捷键设置、自动重复、状态、排他性、点击、有效区域和模拟点击等。这里我们有两种方案选择,一种是新建一个子类继承QAbstractButton,另一种就是直接使用PyQt5给我们提供的按钮子类。

因为QAbstractButton不能直接实例化,也没有必要原生一个类来设计一个自定义按钮,所以我们把这些方法主要放在后面的章节来详细说明,这里先简单介绍一下QAbstractButton的方法分类和API。

1.提示文本和获取文本内容:setText()  text()

2.按钮图标设置和获取:setIcon()   setIconSize()   icon()   iconSize()

3.按钮快捷键:

btn.setText('&aaaa')    # Alt + &后面的首字母
btn.setShortcut('Ctrl+s')  # 这个使用起来更加自由

4.自动重复:

setAutoRepeat()   设置自动重复
setAutoRepeatInterval(毫秒)   设置自动重复间隔
setAutoRepeatDelay(毫秒)    设置首次自动重复延时
autoRepeat()   获取自动重复
autoRepeatInterval()   获取自动重复间隔
autoRepeatDelay()    获取首次自动重复延时

5.按钮状态:setDown(bool)   isDown()   isChecked()   setChecked(bool)  isCheckable()  setCheckable()  toggle()全选/反选,继承:QWidget中的:isEnabled()  setEnabled(bool)

6.按钮排他性设置:autoExclusive()   setAutoExclusive(bool)

7.模拟点击:click()   animateClick(ms)

8.按钮点击有效区域设置:hitButton(QPoint)

下面把一些测试代码放上来,大家可以自己测试一下,后面的QPushButton等按钮控件中会有详细说明。

from PyQt5.Qt import *
 import sys
 
 app = QApplication(sys.argv)
 
 window = QWidget()
 window.setWindowTitle('QAbstractButton - PyQt5中文网')
 window.resize(600, 450)
 window.move(300, 300)
 
 btn = QPushButton(window)
 btn.setText('按钮')
 
 # ==============图标设置=============== # 代码分割线 - 开始
 qicon = QIcon('123.jpg')
 btn.setIcon(qicon)
 
 qsize = QSize(5, 5)
 btn.setIconSize(qsize)
 
 print(btn.icon())
 print(btn.iconSize())
 # ==============图标设置=============== # 代码分割线 - 结束
 
 # ==============快捷键设置=============== # 代码分割线 - 开始
 btn.pressed.connect(lambda: print('WWWWW'))
 # btn.setText('&aaaa')    # Alt + &后面的首字母
 btn.setShortcut('Ctrl+s')  # 这个使用起来更加自由
 # ==============快捷键设置=============== # 代码分割线 - 结束
 
 # ==============自动重复=============== # 代码分割线 - 开始
 print(btn.autoRepeat())
 btn.setAutoRepeat(True)
 btn.setAutoRepeatInterval(1000)
 btn.setAutoRepeatDelay(3000)
 # ==============自动重复=============== # 代码分割线 - 结束
 
 # ==============按钮状态=============== # 代码分割线 - 开始
 btn2 = QPushButton(window)
 btn2.setText('第二个按钮')
 btn2.move(100, 100)
 btn2.setStyleSheet('QPushButton:pressed {background-color:green}')
 btn2.setDown(True)
 
 btn3 = QRadioButton(window)
 btn3.setText('单选按钮')
 btn3.move(150, 150)
 
 
 def tog():
     # btn3.toggle()
     btn3.setChecked(not btn3.isChecked())
 
 
 btn2.pressed.connect(tog)
 # ==============按钮状态=============== # 代码分割线 - 结束
 
 # ==============排他性=============== # 代码分割线 - 开始
 btn4 = QCheckBox(window)
 btn4.move(200, 200)
 btn4.setText('男')
 btn4.setAutoExclusive(True)
 
 btn5 = QCheckBox(window)
 btn5.move(200, 230)
 btn5.setText('女')
 btn5.setAutoExclusive(True)
 # ==============排他性=============== # 代码分割线 - 结束
 
 # ==============按钮模拟点击=============== # 代码分割线 - 开始
 btn6 = QPushButton(window)
 btn6.setText('模拟点击')
 btn6.move(300, 300)
 # btn6.click()
 btn6.animateClick(2000)
 # ==============按钮模拟点击=============== # 代码分割线 - 结束
 
 
 # ==============按钮点击有效区域设置=============== # 代码分割线 - 开始
 class Btn2(QPushButton):
     def hitButton(self, poi):
         print(poi)
         if poi.x() > self.width() / 2:
             return True
         return False
 
 
 btn6 = Btn2(window)
 btn6.setText('有效区域')
 btn6.move(0, 300)
 btn6.pressed.connect(lambda: print('========='))
 # ==============按钮点击有效区域设置=============== # 代码分割线 - 结束
 window.show()
 sys.exit(app.exec_())