1. 程式人生 > 其它 >5.1 QAbstractButton按鈕控制元件基類API大全

5.1 QAbstractButton按鈕控制元件基類API大全

一、QAbstractButton按鈕控制元件基類API大全

1.基本概念

1.提示文字:setText()  text()
2.影象:setIcon()   setIconSize()   icon()   iconSize()
3.快捷鍵:
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)

2.程式碼


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('按鈕')  #設定按鈕的名稱
btn.text()

# ==============圖示設定=============== # 程式碼分割線 - 開始
qicon = QIcon('aaa.png') #獲取對應名稱的圖片
btn.setIcon(qicon)

qsize = QSize(20, 20)  #設定圖示的大小
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)#設定自動重複的速度 1000ms=1s
btn.setAutoRepeatDelay(3000)#首次重複等待3s
# ==============自動重複=============== # 程式碼分割線 - 結束

# ==============按鈕狀態=============== # 程式碼分割線 - 開始
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)
btn3.setChecked(True)


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)  #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_())

3.效果