PyQt - Widget QPushButton

En cualquier diseño de GUI, el botón de comando es el control más importante y más utilizado. Los botones con Guardar, Abrir, Aceptar, Sí, No y Cancelar, etc., como título, son familiares para cualquier usuario de computadora. En PyQt API, elQPushButton El objeto de clase presenta un botón que cuando se hace clic en él se puede programar para invocar una función determinada.

La clase QPushButton hereda su funcionalidad principal de QAbstractButtonclase. Tiene forma rectangular y se puede mostrar una leyenda de texto o un icono en su cara.

A continuación se muestran algunos de los métodos más utilizados de la clase QPushButton:

No Señor. Métodos y descripción
1

setCheckable()

Reconoce los estados presionado y liberado del botón si se establece en verdadero

2

toggle()

Alterna entre estados comprobables

3

setIcon()

Muestra un icono formado a partir del mapa de píxeles de un archivo de imagen

4

setEnabled()

Cuando se establece en falso, el botón se desactiva, por lo tanto, hacer clic en él no emite una señal

5

isChecked()

Devuelve el estado booleano del botón

6

setDefault()

Establece el botón como predeterminado

7

setText()

Establece programáticamente el título de los botones

8

text()

Recupera el título de los botones

Ejemplo

Se establecen cuatro objetos QPushButton con algunos de los atributos anteriores. El ejemplo está escrito en forma orientada a objetos, porque la fuente del evento debe pasarse como argumento a la función de ranura.

Cuatro objetos QPushButton se definen como variables de instancia en la clase. Primer botónb1 se convierte en botón de alternancia por las declaraciones -

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

La señal de clic de este botón está conectada a un método miembro btnstate () que identifica si el botón se presiona o suelta al verificar la propiedad isChecked ().

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

Segundo botón b2muestra un icono en la cara. El método setIcon () toma un objeto de mapa de píxeles de cualquier archivo de imagen como argumento.

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

Botón b3 está configurado para desactivarse mediante el método setEnabled () -

b3.setEnabled(False)

Presionar el botón b4se establece en el botón predeterminado mediante el método setDefault (). El acceso directo a su título se crea mediante el prefijo & al título (& Predeterminado). Como resultado, al usar la combinación de teclado Alt + D, se llamará al método de ranura conectada.

Los botones b1 y b4 están conectados al método de ranura whichbtn (). Dado que la función está destinada a recuperar el título del botón en el que se hizo clic, el objeto del botón debe pasarse como un argumento. Esto se logra mediante el uso de la función lambda.

Por ejemplo,

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

El código completo se proporciona a continuación:

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

El código anterior produce la siguiente salida.

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