1. 程式人生 > 程式設計 >python GUI庫圖形介面開發之PyQt5切換按鈕控制元件QPushButton詳細使用方法與例項

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

效果圖如下

python GUI庫圖形介面開發之PyQt5切換按鈕控制元件QPushButton詳細使用方法與例項

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控制元件教程請檢視下面的相關連結