2011-12-25 31 views
9

Soy nuevo en la programación de Qt y GUI en general, pero he hecho un poco de codificación en los módulos de escritura de pitón, y así sucesivamente. Necesito desarrollar GUI simples para algunos de mis módulos anteriores.aplicando funciones de python directamente al diseñador de Qt como señales

lo que estoy tratando de hacer puede ser representado por el siguiente ejemplo:

def f(x, y): 
    z = x + y 
    return z 

Para esta función daré dos alineaciones ediciones de X e Y y uno para z. Ahora creo un botón 'calcular' y cuando lo hago quiero que tome xey de las ediciones de línea ejecute la función f(x,y) y dé la salida a z.

¿Hay alguna manera de hacer esto directamente en Qt Designer agregando la función f(x,y) escrita en python?

Si no, ¿cuáles son las alternativas?

Respuesta

16

El flujo de trabajo básico al escribir una interfaz gráfica de usuario PyQt4 es:

  1. Diseño de la interfaz de usuario usando Qt Designer.
  2. Genera un módulo Python desde el archivo UI usando pyuic4.
  3. Cree un módulo de aplicación para la lógica principal del programa.
  4. Importe la clase de la GUI en el módulo Aplicación.
  5. Conecte la GUI a la lógica del programa.

Por lo tanto, dado el archivo de interfaz de usuario calc.ui, se podría generar el módulo de interfaz de usuario con:

pyuic4 -w calc.ui > calc_ui.py 

y luego crear un módulo de aplicación algo como esto:

from PyQt4 import QtGui, QtCore 
from calc_ui import CalculatorUI 

class Calculator(CalculatorUI): 
    def __init__(self): 
     CalculatorUI.__init__(self) 
     self.buttonCalc.clicked.connect(self.handleCalculate) 

    def handleCalculate(self): 
     x = int(self.lineEditX.text()) 
     y = int(self.lineEditY.text()) 
     self.lineEditZ.setText(str(x + y)) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Calculator() 
    window.show() 
    sys.exit(app.exec_()) 

Nota que ayuda para establecer el objectName para cada widget en Designer's Property Editor para que puedan identificarse fácilmente más adelante. En particular, el objectName del formulario principal se convertirá en el nombre de clase de la clase GUI que se importa (suponiendo que se usa el indicador "-w" en pyuic4).

+1

da el siguiente error: el programa depurado levantó la excepción no controlada AttributeError "El objeto 'Calculadora' no tiene atributo 'buttonCalc'. ¿Qué ha fallado? Llamé al objeto del botón como buttonCalc en Qt Designer – linuS

+1

Asegúrese de volver a ejecutar 'pyuic4' cada vez que guarda cambios en su archivo ui. Si eso no lo soluciona, pruebe [este archivo ui] (http://pastebin.com/Ciu8p4ry) como un ejemplo que funciona con el script en mi respuesta. – ekhumoro

+0

de nuevo el mismo problema. Por cierto estoy usando Eric IDE. – linuS

Cuestiones relacionadas