python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5切換按鈕控件QPushButton詳細(xì)使用方法與實(shí)例
QAbstractButton類為抽象類,不能實(shí)例化,必須由其他的按鈕類繼承QAbstractButton類,來(lái)實(shí)現(xiàn)不同的功能和表現(xiàn)形式,常見(jiàn)的按鈕QPushButton,QToolButton,QRadioButton和QCheckBox這些按鈕均繼承自QAbstractButton類,根據(jù)各自的使用場(chǎng)景通過(guò)圖形顯示出來(lái)
QAbstractButton提供的狀態(tài)如下表 狀態(tài) 含義 isDown() 提示按鈕是否已按下 isChecked() 提示按鈕是否已經(jīng)標(biāo)記 isEnable() 提示按鈕是否可以被用戶點(diǎn)擊 isCheckAble() 提示按鈕是否為可標(biāo)記的 setAutoRepeat() 設(shè)置按鈕是否在用戶長(zhǎng)按時(shí)可以自動(dòng)重復(fù)執(zhí)行 QAbstractButton提供的信號(hào)如下表 信號(hào) 含義 Pressed 當(dāng)鼠標(biāo)指針在按鈕上并按下左鍵時(shí)觸發(fā)該信號(hào) Released 當(dāng)鼠標(biāo)左鍵被釋放時(shí)觸發(fā)該信號(hào) Clicked 當(dāng)鼠標(biāo)左鍵被按下然后釋放時(shí),或者快捷鍵被釋放時(shí)觸發(fā)該信號(hào) Toggled 當(dāng)按鈕的標(biāo)記狀態(tài)發(fā)生改變時(shí)觸發(fā)該信號(hào) QPUshButton類中的常用方法 方法 描述 setCheckable() 設(shè)置按鈕是否已經(jīng)被選中,如果設(shè)置True,則表示按鈕將保持已點(diǎn)擊和釋放狀態(tài) toggle() 在按鈕狀態(tài)之間進(jìn)行切換 setIcon() 設(shè)置按鈕上的圖標(biāo) setEnabled() 設(shè)置按鈕是否可以使用,當(dāng)設(shè)置為False時(shí),按鈕變成不可用狀態(tài),點(diǎn)擊它不會(huì)發(fā)射信號(hào) isChecked() 返回按鈕的狀態(tài),返回值為True或者False setDefault() 設(shè)置按鈕的默認(rèn)狀態(tài) setText() 設(shè)置按鈕的顯示文本 text() 返回按鈕的顯示文本為QPushButton設(shè)置快捷鍵
通過(guò)按鈕名字能為QPushButton設(shè)置快捷鍵,比如名字為‘&Download’的按鍵,它的快捷鍵是‘Alt+D’。其規(guī)則是;想要實(shí)現(xiàn)快捷鍵為“Alt+D”,那么按鈕的名字里有D這個(gè)字母,并且在D的前面加上“&”,這個(gè)字母D一般是按鈕名稱的首字母,而且在按鈕顯示時(shí)。“&”不會(huì)顯示出來(lái),如果想顯示,那么需要轉(zhuǎn)義,核心代碼如下
self.btn4=QPushButton(’&Download’)self.btn4.setDefault(True)QPushButton按鈕的使用實(shí)例
import sysfrom 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() #創(chuàng)建按鈕1 self.btn1=QPushButton(’Button1’) #setCheckable():設(shè)置按鈕是否已經(jīng)被選中,如果為True,則表示按鈕將保持已點(diǎn)擊和釋放狀態(tài) self.btn1.setCheckable(True) #toggle():在按鈕狀態(tài)之間進(jìn)行切換 self.btn1.toggle() #點(diǎn)擊信號(hào)與槽函數(shù)進(jìn)行連接,這一步實(shí)現(xiàn):在控制臺(tái)輸出被點(diǎn)擊的按鈕 self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1)) #點(diǎn)擊信號(hào)與槽函數(shù)進(jìn)行連接,實(shí)現(xiàn)的目的:輸入安妞的當(dāng)前狀態(tài),按下還是釋放 self.btn1.clicked.connect(self.btnstate) #添加控件到布局中 layout.addWidget(self.btn1) #創(chuàng)建按鈕2 self.btn2=QPushButton(’image’) #為按鈕2添加圖標(biāo) self.btn2.setIcon(QIcon(QPixmap(’E:pyqt5快速開(kāi)發(fā)與實(shí)戰(zhàn)第四章imagespython.png’))) ##點(diǎn)擊信號(hào)與槽函數(shù)進(jìn)行連接,這一步實(shí)現(xiàn):在控制臺(tái)輸出被點(diǎn)擊的按鈕 self.btn2.clicked.connect(lambda :self.whichbtn(self.btn2)) layout.addWidget(self.btn2) self.btn3=QPushButton(’Disabled’) #setEnabled()設(shè)置按鈕是否可以使用,當(dāng)設(shè)置為False的時(shí)候,按鈕變成不可用狀態(tài),點(diǎn)擊它不會(huì)發(fā)射信號(hào) self.btn3.setEnabled(False) layout.addWidget(self.btn3) #創(chuàng)建按鈕并添加快捷鍵 self.btn4=QPushButton(’&Download’) #setDefault():設(shè)置按鈕的默認(rèn)狀態(tài) self.btn4.setDefault(True) ##點(diǎn)擊信號(hào)與槽函數(shù)進(jìn)行連接,這一步實(shí)現(xiàn):在控制臺(tái)輸出被點(diǎn)擊的按鈕 self.btn4.clicked.connect(lambda :self.whichbtn(self.btn4)) layout.addWidget(self.btn4) self.setWindowTitle('Button demo') self.setLayout(layout) def btnstate(self): #isChecked():判斷按鈕的狀態(tài),返回值為True或False if self.btn1.isChecked(): print(’button pressed’) else: print(’button released’) def whichbtn(self,btn): #輸出被點(diǎn)擊的按鈕 print(’clicked button is ’+btn.text())if __name__ == ’__main__’: app=QApplication(sys.argv) btnDemo=Form() btnDemo.show() sys.exit(app.exec_())
效果圖如下
在這個(gè)例子中,創(chuàng)建了四個(gè)按鈕,這四個(gè)QPushButton對(duì)象被定義為類的實(shí)例變量,每個(gè)按鈕都將clicked的信號(hào)發(fā)送給指定的槽函數(shù),來(lái)響應(yīng)按鈕點(diǎn)擊的事件
第一個(gè)按鈕btn1,**通過(guò)toggle()函數(shù)來(lái)切換按鈕的狀態(tài),其核心代碼是
self.btn1=QPushButton(’Button1’)self.btn1.setCheckable(True)self.btn1.toggle()
當(dāng)這個(gè)按鈕點(diǎn)擊時(shí),將clicked信號(hào)發(fā)送給槽函數(shù)btnstate(),通過(guò)btn.isChecked來(lái)獲得按鈕是否被點(diǎn)擊或者釋放的狀態(tài),其核心代碼是
self.btn1.clicked.connect(self.btnstate)
還可以通過(guò)lambda表達(dá)式來(lái)傳遞額外的參數(shù)btn1,將clicked信號(hào)發(fā)送給槽函數(shù)whichbtn(),其核心代碼
self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))
第二個(gè)按鈕btn2,上面顯示一個(gè)圖標(biāo),使用setIcon()方法接受一個(gè)QPixmap對(duì)象的圖像文件作為輸入?yún)?shù),其核心代碼是
self.btn2.setIcon(QIcon(QPixmap(’E:pyqt5快速開(kāi)發(fā)與實(shí)戰(zhàn)第四章imagespython.png’)))
第三個(gè)按鈕btn3,使用setEnabled()方法來(lái)禁用btn3按鈕
self.btn3.setEnabled(False)
第四個(gè)按鈕btn4,使用setDefault()方法·來(lái)設(shè)置按鈕的默認(rèn)狀態(tài)。快捷鍵是‘&+文本’(&Download),通過(guò)‘Alt+D’快捷鍵來(lái)調(diào)用槽函數(shù)
self.btn4=QPushButton(’&Download’)
本文主要講解了PyQt5切換按鈕控件QPushButton詳細(xì)使用方法與實(shí)例,更多關(guān)于PyQt5控件教程請(qǐng)查看下面的相關(guān)鏈接
相關(guān)文章:
1. 利用單元測(cè)試對(duì)PHP代碼進(jìn)行檢查2. python如何實(shí)現(xiàn)word批量轉(zhuǎn)HTML3. Java8內(nèi)存模型PermGen Metaspace實(shí)例解析4. python excel和yaml文件的讀取封裝5. python3實(shí)現(xiàn)往mysql中插入datetime類型的數(shù)據(jù)6. python爬蟲實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊7. moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問(wèn)題及解決8. Django 權(quán)限管理(permissions)與用戶組(group)詳解9. Python編寫memcached啟動(dòng)腳本代碼實(shí)例10. Python編寫單元測(cè)試代碼實(shí)例
