PyQt - Widget QPushButton

In qualsiasi progetto di GUI, il pulsante di comando è il controllo più importante e più utilizzato. I pulsanti con Salva, Apri, OK, Sì, No e Annulla ecc. Come didascalia sono familiari a qualsiasi utente di computer. Nell'API PyQt, ilQPushButton L'oggetto classe presenta un pulsante che, se cliccato, può essere programmato per richiamare una determinata funzione.

La classe QPushButton eredita le sue funzionalità principali da QAbstractButtonclasse. È di forma rettangolare e sulla sua faccia è possibile visualizzare una didascalia o un'icona di testo.

Di seguito sono riportati alcuni dei metodi più comunemente usati della classe QPushButton:

Sr.No. Metodi e descrizione
1

setCheckable()

Riconosce gli stati premuti e rilasciati del pulsante se impostato su true

2

toggle()

Alterna tra stati verificabili

3

setIcon()

Mostra un'icona formata da pixmap di un file immagine

4

setEnabled()

Quando è impostato su false, il pulsante viene disabilitato, quindi facendo clic su di esso non viene emesso un segnale

5

isChecked()

Restituisce lo stato booleano del pulsante

6

setDefault()

Imposta il pulsante come predefinito

7

setText()

Imposta a livello di codice la didascalia dei pulsanti

8

text()

Recupera la didascalia dei pulsanti

Esempio

Quattro oggetti QPushButton sono impostati con alcuni degli attributi precedenti. L'esempio è scritto in forma orientata agli oggetti, perché la sorgente dell'evento deve essere passata come argomento alla funzione slot.

Quattro oggetti QPushButton sono definiti come variabili di istanza nella classe. Primo pulsanteb1 viene convertito in pulsante di attivazione / disattivazione dalle istruzioni -

self.b1.setCheckable(True)
self.b1.toggle()

Il segnale cliccato di questo pulsante è connesso a un metodo membro btnstate () che identifica se il pulsante viene premuto o rilasciato controllando la proprietà isChecked ().

def btnstate(self):
   if self.b1.isChecked():
      print "button pressed"
   else:
      print "button released"

Secondo pulsante b2visualizza un'icona sul viso. Il metodo setIcon () accetta un oggetto pixmap di qualsiasi file immagine come argomento.

b2.setIcon(QIcon(QPixmap("python.gif")))

Pulsante b3 è impostato per essere disabilitato utilizzando il metodo setEnabled () -

b3.setEnabled(False)

Premi il bottone b4è impostato sul pulsante predefinito dal metodo setDefault (). Il collegamento alla sua didascalia viene creato anteponendo & alla didascalia (& Default). Di conseguenza, utilizzando la combinazione di tasti Alt + D, verrà chiamato il metodo dello slot connesso.

I pulsanti b1 e b4 sono collegati al metodo slot whichbtn (). Poiché la funzione ha lo scopo di recuperare la didascalia del pulsante cliccato, l'oggetto pulsante dovrebbe essere passato come argomento. Ciò si ottiene utilizzando la funzione lambda.

Per esempio,

b4.clicked.connect(lambda:self.whichbtn(self.b4))

Il codice completo è dato di seguito -

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Form(QDialog):
   def __init__(self, parent=None):
      super(Form, self).__init__(parent)
		
      layout = QVBoxLayout()
      self.b1 = QPushButton("Button1")
      self.b1.setCheckable(True)
      self.b1.toggle()
      self.b1.clicked.connect(lambda:self.whichbtn(self.b1))
      self.b1.clicked.connect(self.btnstate)
      layout.addWidget(self.b1)
		
      self.b2 = QPushButton()
      self.b2.setIcon(QIcon(QPixmap("python.gif")))
      self.b2.clicked.connect(lambda:self.whichbtn(self.b2))
      layout.addWidget(self.b2)
      self.setLayout(layout)
      self.b3 = QPushButton("Disabled")
      self.b3.setEnabled(False)
      layout.addWidget(self.b3)
		
      self.b4 = QPushButton("&Default")
      self.b4.setDefault(True)
      self.b4.clicked.connect(lambda:self.whichbtn(self.b4))
      layout.addWidget(self.b4)
      
      self.setWindowTitle("Button demo")

   def btnstate(self):
      if self.b1.isChecked():
         print "button pressed"
      else:
         print "button released"
			
   def whichbtn(self,b):
      print "clicked button is "+b.text()

def main():
   app = QApplication(sys.argv)
   ex = Form()
   ex.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

Il codice precedente produce il seguente output.

clicked button is Button1
button released
clicked button is Button1
button pressed
clicked button is &Default