PyQt - Widget QPushButton

Em qualquer design de GUI, o botão de comando é o controle mais importante e usado com mais frequência. Os botões com Salvar, Abrir, OK, Sim, Não e Cancelar, etc., como legenda, são familiares para qualquer usuário de computador. Na API PyQt, oQPushButton O objeto de classe apresenta um botão que, quando clicado, pode ser programado para chamar uma determinada função.

A classe QPushButton herda sua funcionalidade principal de QAbstractButtonclasse. Tem forma retangular e uma legenda de texto ou ícone pode ser exibido em sua face.

A seguir estão alguns dos métodos mais comumente usados ​​da classe QPushButton -

Sr. Não. Métodos e Descrição
1

setCheckable()

Reconhece os estados do botão pressionado e solto se definido como verdadeiro

2

toggle()

Alterna entre estados verificáveis

3

setIcon()

Mostra um ícone formado a partir do pixmap de um arquivo de imagem

4

setEnabled()

Quando definido como falso, o botão fica desativado, portanto, clicar nele não emite um sinal

5

isChecked()

Retorna o estado booleano do botão

6

setDefault()

Define o botão como padrão

7

setText()

Define programaticamente a legenda dos botões

8

text()

Recupera a legenda dos botões

Exemplo

Quatro objetos QPushButton são definidos com alguns dos atributos acima. O exemplo é escrito na forma orientada a objetos, porque a origem do evento deve ser passada como um argumento para a função slot.

Quatro objetos QPushButton são definidos como variáveis ​​de instância na classe. Primeiro botãob1 é convertido em botão de alternância pelas declarações -

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

O sinal clicado deste botão é conectado a um método membro btnstate () que identifica se o botão é pressionado ou liberado verificando a propriedade isChecked ().

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

Segundo botão b2exibe um ícone no rosto. O método setIcon () pega um objeto pixmap de qualquer arquivo de imagem como argumento.

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

Botão b3 está definido para ser desativado usando o método setEnabled () -

b3.setEnabled(False)

Botão de apertar b4é definido como botão padrão pelo método setDefault (). O atalho para sua legenda é criado prefixando & à legenda (& Padrão). Como resultado, usando a combinação de teclado Alt + D, o método de slot conectado será chamado.

Os botões b1 e b4 são conectados ao método de slot whichbtn (). Uma vez que a função se destina a recuperar a legenda do botão clicado, o objeto de botão deve ser passado como um argumento. Isso é obtido pelo uso da função lambda.

Por exemplo,

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

O código completo é fornecido abaixo -

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

O código acima produz a seguinte saída.

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