PyQt - Widget QPushButton

Dans toute conception d'interface graphique, le bouton de commande est le contrôle le plus important et le plus souvent utilisé. Les boutons avec Enregistrer, Ouvrir, OK, Oui, Non et Annuler, etc. comme légende sont familiers à tout utilisateur d'ordinateur. Dans l'API PyQt, leQPushButton objet de classe présente un bouton qui, lorsqu'il est cliqué, peut être programmé pour appeler une certaine fonction.

La classe QPushButton hérite de ses fonctionnalités principales de QAbstractButtonclasse. Il est de forme rectangulaire et une légende de texte ou une icône peut être affichée sur son visage.

Voici quelques-unes des méthodes les plus couramment utilisées de la classe QPushButton -

N ° Sr. Méthodes et description
1

setCheckable()

Reconnaît les états enfoncés et relâchés du bouton s'il est défini sur true

2

toggle()

Bascule entre les états vérifiables

3

setIcon()

Affiche une icône formée à partir de la pixmap d'un fichier image

4

setEnabled()

Lorsqu'il est défini sur false, le bouton devient désactivé, par conséquent, cliquer dessus n'émet pas de signal

5

isChecked()

Renvoie l'état booléen du bouton

6

setDefault()

Définit le bouton par défaut

sept

setText()

Définit par programmation la légende des boutons

8

text()

Récupère la légende des boutons

Exemple

Quatre objets QPushButton sont définis avec certains des attributs ci-dessus. L'exemple est écrit sous forme orientée objet, car la source de l'événement doit être transmise en tant qu'argument à la fonction slot.

Quatre objets QPushButton sont définis en tant que variables d'instance dans la classe. Premier boutonb1 est converti en bouton bascule par les instructions -

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

Le signal cliqué de ce bouton est connecté à une méthode membre btnstate () qui identifie si le bouton est enfoncé ou relâché en vérifiant la propriété isChecked ().

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

Deuxième bouton b2affiche une icône sur le visage. La méthode setIcon () prend un objet pixmap de n'importe quel fichier image comme argument.

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

Bouton b3 est défini pour être désactivé à l'aide de la méthode setEnabled () -

b3.setEnabled(False)

Bouton b4est défini sur le bouton par défaut par la méthode setDefault (). Le raccourci vers sa légende est créé en préfixant & à la légende (& par défaut). En conséquence, en utilisant la combinaison de touches Alt + D, la méthode de l'emplacement connecté sera appelée.

Les boutons b1 et b4 sont connectés à quelle méthode de slotbtn (). Étant donné que la fonction est destinée à récupérer la légende du bouton cliqué, l'objet bouton doit être passé comme argument. Ceci est réalisé par l'utilisation de la fonction lambda.

Par exemple,

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

Le code complet est donné ci-dessous -

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

Le code ci-dessus produit la sortie suivante.

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