python GUI庫圖形界面開發(fā)之PyQt5切換按鈕控件QPushButton詳細使用方法與實例
PyQt5切換按鈕控件QPushButton簡介
QAbstractButton類為抽象類,不能實例化,必須由其他的按鈕類繼承QAbstractButton類,來實現(xiàn)不同的功能和表現(xiàn)形式,常見的按鈕QPushButton,QToolButton,QRadioButton和QCheckBox這些按鈕均繼承自QAbstractButton類,根據(jù)各自的使用場景通過圖形顯示出來
QAbstractButton提供的狀態(tài)如下表
| 狀態(tài) | 含義 |
|---|---|
| isDown() | 提示按鈕是否已按下 |
| isChecked() | 提示按鈕是否已經(jīng)標(biāo)記 |
| isEnable() | 提示按鈕是否可以被用戶點擊 |
| isCheckAble() | 提示按鈕是否為可標(biāo)記的 |
| setAutoRepeat() | 設(shè)置按鈕是否在用戶長按時可以自動重復(fù)執(zhí)行 |
QAbstractButton提供的信號如下表
| 信號 | 含義 |
|---|---|
| Pressed | 當(dāng)鼠標(biāo)指針在按鈕上并按下左鍵時觸發(fā)該信號 |
| Released | 當(dāng)鼠標(biāo)左鍵被釋放時觸發(fā)該信號 |
| Clicked | 當(dāng)鼠標(biāo)左鍵被按下然后釋放時,或者快捷鍵被釋放時觸發(fā)該信號 |
| Toggled | 當(dāng)按鈕的標(biāo)記狀態(tài)發(fā)生改變時觸發(fā)該信號 |
QPUshButton類中的常用方法
| 方法 | 描述 |
|---|---|
| setCheckable() | 設(shè)置按鈕是否已經(jīng)被選中,如果設(shè)置True,則表示按鈕將保持已點擊和釋放狀態(tài) |
| toggle() | 在按鈕狀態(tài)之間進行切換 |
| setIcon() | 設(shè)置按鈕上的圖標(biāo) |
| setEnabled() | 設(shè)置按鈕是否可以使用,當(dāng)設(shè)置為False時,按鈕變成不可用狀態(tài),點擊它不會發(fā)射信號 |
| isChecked() | 返回按鈕的狀態(tài),返回值為True或者False |
| setDefault() | 設(shè)置按鈕的默認狀態(tài) |
| setText() | 設(shè)置按鈕的顯示文本 |
| text() | 返回按鈕的顯示文本 |
為QPushButton設(shè)置快捷鍵
通過按鈕名字能為QPushButton設(shè)置快捷鍵,比如名字為‘&Download'的按鍵,它的快捷鍵是‘Alt+D'。其規(guī)則是;想要實現(xiàn)快捷鍵為“Alt+D”,那么按鈕的名字里有D這個字母,并且在D的前面加上“&”,這個字母D一般是按鈕名稱的首字母,而且在按鈕顯示時?!?amp;”不會顯示出來,如果想顯示,那么需要轉(zhuǎn)義,核心代碼如下
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()
#創(chuàng)建按鈕1
self.btn1=QPushButton('Button1')
#setCheckable():設(shè)置按鈕是否已經(jīng)被選中,如果為True,則表示按鈕將保持已點擊和釋放狀態(tài)
self.btn1.setCheckable(True)
#toggle():在按鈕狀態(tài)之間進行切換
self.btn1.toggle()
#點擊信號與槽函數(shù)進行連接,這一步實現(xiàn):在控制臺輸出被點擊的按鈕
self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))
#點擊信號與槽函數(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快速開發(fā)與實戰(zhàn)\第四章\images\python.png')))
##點擊信號與槽函數(shù)進行連接,這一步實現(xiàn):在控制臺輸出被點擊的按鈕
self.btn2.clicked.connect(lambda :self.whichbtn(self.btn2))
layout.addWidget(self.btn2)
self.btn3=QPushButton('Disabled')
#setEnabled()設(shè)置按鈕是否可以使用,當(dāng)設(shè)置為False的時候,按鈕變成不可用狀態(tài),點擊它不會發(fā)射信號
self.btn3.setEnabled(False)
layout.addWidget(self.btn3)
#創(chuàng)建按鈕并添加快捷鍵
self.btn4=QPushButton('&Download')
#setDefault():設(shè)置按鈕的默認狀態(tài)
self.btn4.setDefault(True)
##點擊信號與槽函數(shù)進行連接,這一步實現(xià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):
#輸出被點擊的按鈕
print('clicked button is '+btn.text())
if __name__ == '__main__':
app=QApplication(sys.argv)
btnDemo=Form()
btnDemo.show()
sys.exit(app.exec_())
效果圖如下

QPushButton代碼分析:
在這個例子中,創(chuàng)建了四個按鈕,這四個QPushButton對象被定義為類的實例變量,每個按鈕都將clicked的信號發(fā)送給指定的槽函數(shù),來響應(yīng)按鈕點擊的事件
第一個按鈕btn1,**通過toggle()函數(shù)來切換按鈕的狀態(tài),其核心代碼是
self.btn1=QPushButton('Button1')
self.btn1.setCheckable(True)
self.btn1.toggle()
當(dāng)這個按鈕點擊時,將clicked信號發(fā)送給槽函數(shù)btnstate(),通過btn.isChecked來獲得按鈕是否被點擊或者釋放的狀態(tài),其核心代碼是
self.btn1.clicked.connect(self.btnstate)
還可以通過lambda表達式來傳遞額外的參數(shù)btn1,將clicked信號發(fā)送給槽函數(shù)whichbtn(),其核心代碼
self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))
第二個按鈕btn2,上面顯示一個圖標(biāo),使用setIcon()方法接受一個QPixmap對象的圖像文件作為輸入?yún)?shù),其核心代碼是
self.btn2.setIcon(QIcon(QPixmap('E:\pyqt5快速開發(fā)與實戰(zhàn)\第四章\images\python.png')))
第三個按鈕btn3,使用setEnabled()方法來禁用btn3按鈕
self.btn3.setEnabled(False)
第四個按鈕btn4,使用setDefault()方法·來設(shè)置按鈕的默認狀態(tài)??旖萱I是‘&+文本'(&Download),通過‘Alt+D'快捷鍵來調(diào)用槽函數(shù)
self.btn4=QPushButton('&Download')
本文主要講解了PyQt5切換按鈕控件QPushButton詳細使用方法與實例,更多關(guān)于PyQt5控件教程請查看下面的相關(guān)鏈接
- Python PYQT界面點擊按鈕隨機變色功能
- PyQt5 designer 頁面點擊按鈕跳轉(zhuǎn)頁面實現(xiàn)
- python編程PyQt5創(chuàng)建按鈕及觸發(fā)點擊事件示例解析
- python GUI庫圖形界面開發(fā)之PyQt5單選按鈕控件QRadioButton詳細使用方法與實例
- python之PyQt按鈕右鍵菜單功能的實現(xiàn)代碼
- PyQt5基本控件使用詳解:單選按鈕、復(fù)選框、下拉框
- pyqt5使用按鈕進行界面的跳轉(zhuǎn)方法
- python之pyqt5通過按鈕改變Label的背景顏色方法
- PyQt彈出式對話框的常用方法及標(biāo)準(zhǔn)按鈕類型
- Pyqt5中6種按鈕的具體使用
相關(guān)文章
教你用python提取txt文件中的特定信息并寫入Excel
這篇文章主要給大家介紹了如何利用python提取txt文件中的特定信息并寫入Excel的相關(guān)資料,Python是一個強大的語言,解決這點問題非常簡單,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2021-11-11
在pandas中遍歷DataFrame行的實現(xiàn)方法
這篇文章主要介紹了在pandas中遍歷DataFrame行的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Python基于回溯法子集樹模板實現(xiàn)圖的遍歷功能示例
這篇文章主要介紹了Python基于回溯法子集樹模板實現(xiàn)圖的遍歷功能,結(jié)合實例形式分析了Python使用回溯法子集樹模板針對圖形遍歷問題的相關(guān)操作技巧與注意事項,需要的朋友可以參考下2017-09-09
python?selenium中Excel數(shù)據(jù)維護指南
這篇文章主要給大家介紹了關(guān)于python?selenium中Excel數(shù)據(jù)維護的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-03-03

