[pyar] PyQt cargar interfaces de forma dinámica
Roberto Alsina
ralsina en netmanagers.com.ar
Mar Jun 5 11:43:02 ART 2012
On 06/05/2012 11:24 AM, Federico Apelhanz wrote:
> bueno, probando y jugando más, todo se resume a esto:
> esto no anda:
> def main():
> app = QtGui.QApplication(sys.argv) #creamos la app, siempre se hace
> así.
> global ui
> ui = MainWindow() #creamos la MainWindow, pero todavía no la mostramos
> ui.ventana.setMenusBar(ui)
Ehhhh? Que se supone que hace eso?
> ui.show()
> from ui_ComprobanteDeCompra import Ui_Form
> comprobanteForm = Ui_Form()
> comprobanteForm.setupUi(ui)
> sys.exit(app.exec_())
Te estas complicando mucho!
>
> esto anda (más o menos, es como si cerrara y volviera a abrir la
> aplicación lo cual no me gusta para nada):
>
> def main():
> app = QtGui.QApplication(sys.argv) #creamos la app, siempre se hace
> así.
> global ui
> ui = MainWindow() #creamos la MainWindow, pero todavía no la mostramos
> ui.ventana.setMenusBar(ui)
> ui.show()
> ui.hide()
> from ui_ComprobanteDeCompra import Ui_Form
> comprobanteForm = Ui_Form()
> comprobanteForm.setupUi(ui)
> ui.show()
> sys.exit(app.exec_())
>
>
> pareciera que qt no refresca la vista, ¿hay alguna manera de forzarlo a
> hacerlo que no sea TAN crota?
En general es muy sencillo. Si tenes el Ui_Form (que no lo importás
adentro de main, eso es una chanchada), create una clase que herede de
QMainWindow (supongo que tu MainWindow es eso), y después, en el
__init__ de esa clase (no en el main!):
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui=Ui_Form()
self.ui.setupUi(self)
Nota: si tenés un Ui_Form quiere decir que en designer creaste algo que
no es un QMainWindow, y eso no va a andar bien jamás.
Despues en main es esto nomás:
def main():
app = QtGui.QApplication(sys.argv)
window=MainWindow()
window.show()
sys.exit(app.exec_())
Si querés pasarle argumentos cuando creás tu MainWindow, los pasás, no
hay ningún problema.
More information about the pyar
mailing list