viernes, 26 de junio de 2015

7 - Python PyQt (Interfaz gráfica) - Radio Button y Checkbox




En este capítulo del tutorial de Python 3 con PyQt5, veremos un sencillo ejemplo de como manejar los elementos Radio Button y Checkbox.

El formulario los diseñaremos con Designer, que será un cuadro de diálogo. Los Radio Buttons los agruparemos en un elemento Group Box, cada Radio Button hará referencia a un lenguaje de programación (python, php, perl y ruby), el Group Box nos permite que el usuario sólo pueda seleccionar uno de los Radio Buttons. También agregaremos un elemento Check Box con el típico ejemplo de "Aceptar los términos".

Para cuando el usuario seleccione un Radio Button mostraremos un mensaje en un elemento Label con el lenguaje seleccionado, igualmente haremos con el Check Box, su estado será mostrado en otra etiqueta Label.

El archivo .ui se llama radio-checkbox.ui y sus elementos son:

  • Un Group Box con el texto "Lenguajes de programacion:"

  • En el interior del Group Box agregaremos cuatro Radio Buttons:
  1. texto "Python", nombre python y seleccionado por defecto (En la propiedad checked)
  2.  texto "PHP" y nombre php
  3. texto "Perl" y nombre perl
  4. texto "Ruby" y nombre ruby

  • Agregaremos un elemento Check Box, con texto "Aceptar los términos" y nombre terminos

  • Agregaremos un elemento Push Button, con texto "Aceptar" y nombre boton

  • Y Finalmente agregaremos dos elementos Label con nombres, labelLenguaje y labelTerminos.



radio-checkbox.pyw

import sys
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5 import uic

class Dialogo(QDialog):
 def __init__(self):
  QDialog.__init__(self)
  uic.loadUi("radio-checkbox.ui", self)
  
  self.radio_value()
  self.boton.clicked.connect(self.radio_value)
  self.checkbox_state()
  self.boton.clicked.connect(self.checkbox_state)
  
 def radio_value(self):
  if self.python.isChecked():
   self.labelLenguaje.setText("Python ha sido seleccionado")
  elif self.php.isChecked():
   self.labelLenguaje.setText("PHP ha sido seleccionado")
  elif self.perl.isChecked():
   self.labelLenguaje.setText("Perl ha sido seleccionado")
  elif self.ruby.isChecked():
   self.labelLenguaje.setText("Ruby ha sido seleccionado")
  else:
   self.labelLenguaje.setText("No hay seleccionado ningún lenguaje")
 
 def checkbox_state(self):
  if self.terminos.isChecked():
   self.labelTerminos.setText("Has aceptado los términos")
  else:
   self.labelTerminos.setText("No has aceptado los términos")
   
app = QApplication(sys.argv)
dialogo = Dialogo()
dialogo.show()
app.exec_()


2 comentarios:

Unknown dijo...

Hola!!! muy buenos los tutoriales.. me ayudan de mucho.. Tengo una consultas donde puedo revisar todos los metodos que tenga el checkbutton, el button, y los demas elementos de Designer para aplicarlos a pyqt? muchas gracias por la respuesta

Anónimo dijo...

Buenas noches, muchas gracias por sus tutoriales, han sido de gran ayuda. Tengo una pregunta: Por qué en esta lección llamó la función self.radio_value() dentro de la clase "Dialogo" y en el video pasado por ej. no llamo las funciones validar_nombre ni validar_formulario en la clase Dialogo? acaso son distintas? y por qué? disculpe mi ignorancia pero quiero diferenciar cuando tengo que llamarla y cuando no.
Saludos desde Venezuela