¿Cómo abro una ventana secundaria después de hacer clic en el botón en la pantalla principal en PyQt4?

Hola estoy tratando de hacer un convertidor simple. He usado PyQt4 diseñado para hacer que la Gui quiero saber cómo abrir una nueva ventana después de hacer clic en el botón individual.

Esta es la interfaz que he creado utilizando PyQt4 Designer. Aquí está el enlace de la imagen:

una

y quiero abrir esta ventana cuando hago clic en el botón de moneda. Aquí está el enlace de la imagen:

segundo

Aquí está mi código para main.py

from PyQt4 import QtGui from main_screen import mainscreen def main(): import sys qApp = QtGui.QApplication(sys.argv) aw = mainscreen() aw.show() sys.exit(qApp.exec_()) if __name__ == '__main__': main() 

y código para mainscreen.py

 from PyQt4 import QtCore, QtGui from window_main import Ui_MainWindow class mainscreen(QtGui.QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(mainscreen,self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) 

¿Cómo puedo abrir una nueva ventana después de hacer clic en el botón de moneda (el nombre del objeto para el botón de moneda es “currency_bt”) y tengo que escribir el código de moneda en la misma ventana o tengo que escribir en una ventana nueva? Cómo lo hago.

Soy nuevo en la progtwigción de Python Gui.

Related of "¿Cómo abro una ventana secundaria después de hacer clic en el botón en la pantalla principal en PyQt4?"

Cada formulario de GUI que cree en Qt Designer debe convertirse en un módulo python usando pyuic. Entonces, para empezar, debes hacer lo mismo para currency.ui que hiciste para window_main .

Ahora puede importar su clase de ventana de moneda en mainscreen.py y conectar un botón al controlador para que pueda mostrarlo.

El código se vería algo así:

 from PyQt4 import QtCore, QtGui from window_main import Ui_MainWindow from currency import Ui_CurrencyWindow class CurrencyWindow(QtGui.QMainWindow, Ui_CurrencyWindow): def __init__(self, parent=None): super(CurrencyWindow, self).__init__(parent) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.setupUi(self) class MainScreen(QtGui.QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(MainScreen, self).__init__(parent) self.setupUi(self) self.currencyButton.clicked.connect(self.handleCurrencyButton) def handleCurrencyButton(self): window = CurrencyWindow(self) window.show() 

Después de ver este código de ejemplo, probablemente se te ocurra que terminarás importando muchos módulos y tendrás mucho código de caldera que escribir para cada uno de ellos (lo cual no es muy divertido).

Por lo tanto, le aconsejo que considere cambiar el diseño de su GUI, de modo que tenga una ventana principal que contenga un tabwidget, y luego tenga una pestaña separada para cada uno de sus convertidores. Esto no solo hará que su aplicación sea mucho más fácil de escribir, sino que también debería ser mucho más fácil de usar.

Estoy haciendo mi tesis de licenciatura en PyQt4. Primero también quise usar el diseñador (generar código es bueno), pero después no lo estaba usando durante mi trabajo. Tal vez sea cuestión de gustos. Pero para tu pregunta (hice esto sin el QtDesigner):

Digamos que tenemos una clase de ventana principal:

 import sys from PyQt4 import QtCore, QtGui class mainscreen(QtGui.QMainWindow): def __init__(self, parent=None): super(mainscreen,self).__init__(parent) self.button = QtGui.QPushButton("push") self.button.clicked.connect(self.pushed) @pyqtSlot() def pushed(self): # in this section here you can create the new window and show it qApp = QtGui.QApplication(sys.argv) aw = mainscreen() aw.show() sys.exit(qApp.exec_()) 

Hay algunos buenos tutoriales ( http://zetcode.com/gui/pyqt4/ me ayudaron a comenzar).

Haga dos progtwigs: main_win.py y second_win.py , luego en main_win.py ponga estas líneas:

 from os import system as sh //In the begin def openewin(self): //In the class main_win sh("python second_win.py") 

Listo, simplemente conecte el botón para funcionar openewin!