PyQt: widget de QInputDialog

Este es un diálogo preconfigurado con un campo de texto y dos botones, Aceptar y Cancelar. La ventana principal recopila la entrada en el cuadro de texto después de que el usuario hace clic en el botón Aceptar o presiona Entrar.

La entrada del usuario puede ser un número, una cadena o un elemento de la lista. También se muestra una etiqueta que indica al usuario lo que debe hacer.

La clase QInputDialog tiene los siguientes métodos estáticos para aceptar la entrada del usuario:

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

getInt()

Crea un cuadro giratorio para un número entero

2

getDouble()

Se puede ingresar un cuadro giratorio con número de punto flotante

3

getText()

Un campo de edición de línea simple para escribir texto

4

getItem()

Un cuadro combinado en el que el usuario puede elegir el elemento.

Ejemplo

El siguiente ejemplo implementa la funcionalidad del diálogo de entrada. La ventana del nivel superior tiene tres botones. Su señal de clic () aparece InputDialog a través de las ranuras conectadas.

items = ("C", "C++", "Java", "Python")

item, ok = QInputDialog.getItem(self, "select input dialog", 
   "list of languages", items, 0, False)
	
   if ok and item:
      self.le.setText(item)
		
   def gettext(self):
      text, ok = QInputDialog.getText(self, 'Text Input Dialog', 'Enter your name:')
      if ok:
         self.le1.setText(str(text))
			
   def getint(self):
      num,ok = QInputDialog.getInt(self,"integer input dualog","enter a number")
		
      if ok:
         self.le2.setText(str(num))

El código completo es el siguiente:

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

class inputdialogdemo(QWidget):
   def __init__(self, parent = None):
      super(inputdialogdemo, self).__init__(parent)
		
      layout = QFormLayout()
      self.btn = QPushButton("Choose from list")
      self.btn.clicked.connect(self.getItem)
		
      self.le = QLineEdit()
      layout.addRow(self.btn,self.le)
      self.btn1 = QPushButton("get name")
      self.btn1.clicked.connect(self.gettext)
		
      self.le1 = QLineEdit()
      layout.addRow(self.btn1,self.le1)
      self.btn2 = QPushButton("Enter an integer")
      self.btn2.clicked.connect(self.getint)
		
      self.le2 = QLineEdit()
      layout.addRow(self.btn2,self.le2)
      self.setLayout(layout)
      self.setWindowTitle("Input Dialog demo")
		
   def getItem(self):
      items = ("C", "C++", "Java", "Python")
		
      item, ok = QInputDialog.getItem(self, "select input dialog", 
         "list of languages", items, 0, False)
			
      if ok and item:
         self.le.setText(item)
			
   def gettext(self):
      text, ok = QInputDialog.getText(self, 'Text Input Dialog', 'Enter your name:')
		
      if ok:
         self.le1.setText(str(text))
			
   def getint(self):
      num,ok = QInputDialog.getInt(self,"integer input dualog","enter a number")
		
      if ok:
         self.le2.setText(str(num))
			
def main(): 
   app = QApplication(sys.argv)
   ex = inputdialogdemo()
   ex.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

El código anterior produce la siguiente salida: