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代表按鈕是否被選中\一般在單選框或核取方塊中使用