python GUI庫圖形介面開發之PyQt5切換按鈕控制元件QPushButton詳細使用方法與例項
PyQt5切換按鈕控制元件QPushButton簡介
QAbstractButton類為抽象類,不能例項化,必須由其他的按鈕類繼承QAbstractButton類,來實現不同的功能和表現形式,常見的按鈕QPushButton,QToolButton,QRadioButton和QCheckBox這些按鈕均繼承自QAbstractButton類,根據各自的使用場景通過圖形顯示出來
QAbstractButton提供的狀態如下表
狀態 | 含義 |
---|---|
isDown() | 提示按鈕是否已按下 |
isChecked() | 提示按鈕是否已經標記 |
isEnable() | 提示按鈕是否可以被使用者點選 |
isCheckAble() | 提示按鈕是否為可標記的 |
setAutoRepeat() | 設定按鈕是否在使用者長按時可以自動重複執行 |
QAbstractButton提供的訊號如下表
訊號 | 含義 |
---|---|
Pressed | 當滑鼠指標在按鈕上並按下左鍵時觸發該訊號 |
Released | 當滑鼠左鍵被釋放時觸發該訊號 |
Clicked | 當滑鼠左鍵被按下然後釋放時,或者快捷鍵被釋放時觸發該訊號 |
Toggled | 當按鈕的標記狀態發生改變時觸發該訊號 |
QPUshButton類中的常用方法
方法 | 描述 |
---|---|
setCheckable() | 設定按鈕是否已經被選中,如果設定True,則表示按鈕將保持已點選和釋放狀態 |
toggle() | 在按鈕狀態之間進行切換 |
setIcon() | 設定按鈕上的圖示 |
setEnabled() | 設定按鈕是否可以使用,當設定為False時,按鈕變成不可用狀態,點選它不會發射訊號 |
isChecked() | 返回按鈕的狀態,返回值為True或者False |
setDefault() | 設定按鈕的預設狀態 |
setText() | 設定按鈕的顯示文字 |
text() | 返回按鈕的顯示文字 |
為QPushButton設定快捷鍵
通過按鈕名字能為QPushButton設定快捷鍵,比如名字為‘&Download'的按鍵,它的快捷鍵是‘Alt+D'。其規則是;想要實現快捷鍵為“Alt+D”,那麼按鈕的名字裡有D這個字母,並且在D的前面加上“&”,這個字母D一般是按鈕名稱的首字母,而且在按鈕顯示時。“&”不會顯示出來,如果想顯示,那麼需要轉義,核心程式碼如下
self.btn4=QPushButton('&Download') self.btn4.setDefault(True)
QPushButton按鈕的使用例項
import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class Form(QDialog): def __init__(self,parent=None): super(Form,self).__init__(parent) #垂直佈局 layout=QVBoxLayout() #建立按鈕1 self.btn1=QPushButton('Button1') #setCheckable():設定按鈕是否已經被選中,如果為True,則表示按鈕將保持已點選和釋放狀態 self.btn1.setCheckable(True) #toggle():在按鈕狀態之間進行切換 self.btn1.toggle() #點選訊號與槽函式進行連線,這一步實現:在控制檯輸出被點選的按鈕 self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1)) #點選訊號與槽函式進行連線,實現的目的:輸入安妞的當前狀態,按下還是釋放 self.btn1.clicked.connect(self.btnstate) #新增控制元件到佈局中 layout.addWidget(self.btn1) #建立按鈕2 self.btn2=QPushButton('image') #為按鈕2新增圖示 self.btn2.setIcon(QIcon(QPixmap('E:\pyqt5快速開發與實戰\第四章\images\python.png'))) ##點選訊號與槽函式進行連線,這一步實現:在控制檯輸出被點選的按鈕 self.btn2.clicked.connect(lambda :self.whichbtn(self.btn2)) layout.addWidget(self.btn2) self.btn3=QPushButton('Disabled') #setEnabled()設定按鈕是否可以使用,當設定為False的時候,按鈕變成不可用狀態,點選它不會發射訊號 self.btn3.setEnabled(False) layout.addWidget(self.btn3) #建立按鈕並新增快捷鍵 self.btn4=QPushButton('&Download') #setDefault():設定按鈕的預設狀態 self.btn4.setDefault(True) ##點選訊號與槽函式進行連線,這一步實現:在控制檯輸出被點選的按鈕 self.btn4.clicked.connect(lambda :self.whichbtn(self.btn4)) layout.addWidget(self.btn4) self.setWindowTitle("Button demo") self.setLayout(layout) def btnstate(self): #isChecked():判斷按鈕的狀態,返回值為True或False if self.btn1.isChecked(): print('button pressed') else: print('button released') def whichbtn(self,btn): #輸出被點選的按鈕 print('clicked button is '+btn.text()) if __name__ == '__main__': app=QApplication(sys.argv) btnDemo=Form() btnDemo.show() sys.exit(app.exec_())
效果圖如下
QPushButton程式碼分析:
在這個例子中,建立了四個按鈕,這四個QPushButton物件被定義為類的例項變數,每個按鈕都將clicked的訊號傳送給指定的槽函式,來響應按鈕點選的事件
第一個按鈕btn1,**通過toggle()函式來切換按鈕的狀態,其核心程式碼是
self.btn1=QPushButton('Button1') self.btn1.setCheckable(True) self.btn1.toggle()
當這個按鈕點選時,將clicked訊號傳送給槽函式btnstate(),通過btn.isChecked來獲得按鈕是否被點選或者釋放的狀態,其核心程式碼是
self.btn1.clicked.connect(self.btnstate)
還可以通過lambda表示式來傳遞額外的引數btn1,將clicked訊號傳送給槽函式whichbtn(),其核心程式碼
self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))
第二個按鈕btn2,上面顯示一個圖示,使用setIcon()方法接受一個QPixmap物件的影象檔案作為輸入引數,其核心程式碼是
self.btn2.setIcon(QIcon(QPixmap('E:\pyqt5快速開發與實戰\第四章\images\python.png')))
第三個按鈕btn3,使用setEnabled()方法來禁用btn3按鈕
self.btn3.setEnabled(False)
第四個按鈕btn4,使用setDefault()方法·來設定按鈕的預設狀態。快捷鍵是‘&+文字'(&Download),通過‘Alt+D'快捷鍵來呼叫槽函式
self.btn4=QPushButton('&Download')
本文主要講解了PyQt5切換按鈕控制元件QPushButton詳細使用方法與例項,更多關於PyQt5控制元件教程請檢視下面的相關連結