Estoy exhausto => PyQT + QStackedWidget

32 views
Skip to first unread message

Matias Garcia

unread,
Jun 4, 2014, 4:54:25 PM6/4/14
to pythona...@googlegroups.com
Espero que alguno me pueda responder... Porque no se si este grupo es para python plano solamente...

He realizado un Wizard de 4 pasos (widgets), inicia en el paso o widget con index 0 [ mainWinAPP.setCurrentIndex(0) ], que se queda escuchando puerto serial pero al detectar datos por un puerto serie, el código pasa por el metodo mainWinAPP.setCurrentIndex(1) y no me cambia al widget 2 o segundo paso. Ya probe con mainWinAPP.setCurrentWidget, o mainWinAPP.setCurrentIndex(.currentIndex + 1), también probe con mainWinAPP.repaint() y nada....

anexo:
- si al inicio del codigo pongo mainWinAPP.setCurrentIndex(2) me muestra el paso 3, 
- todo el codigo se encuentra bajo un while true: para que cuando termine el paso 4, vuelva al primero... es un sistema automatizado

Alguien tiene idea que esta sucediendo ? 

Gracias !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Matias Garcia

unread,
Jun 4, 2014, 4:56:31 PM6/4/14
to pythona...@googlegroups.com
class MainWizard(QtGui.QStackedWidget):
 
    def __init__(self):
        # Inicializacion de ventana
        super(MainWizard, self).__init__()
        QtGui.QMainWindow.showFullScreen(self)
        self.ui = Ui_registerWizard()
        self.ui.setupUi(self)
...
mainWinAPP = MainWizard()
mainWinAPP.show()
...

Matias Garcia

unread,
Jun 4, 2014, 5:37:20 PM6/4/14
to pythona...@googlegroups.com
Lo resolví, se me refresco la interfaz grafica tras ir al siguiente widget...

Lo que hice fue agregar un QtGui.QApplication.processEvents() despues de llamar al mainWinAPP.goToStep(actstep), y agregué este metodo .goToStep(self, index) al MainWizard(QtGui.QStackedWidget):

porque sucede esto? Realmente me genera confusiones, hace poco mas de un mes que trabajo con Qt, y googleando encontre que para refrescar la UI en bucles hay que agregar la linea QtGui.QApplication.processEvents(). Lo que me genera confusion es porque debo agregar esta linea, si al detectar datos del serial, salgo de ese bucle, y sigo la linea del codigo normal

espero que a alguno le sirva... saludos
Reply all
Reply to author
Forward
0 new messages