TransWikia.com

Importar un archivo completo desde un archivo .py Python PyQt5

Stack Overflow en español Asked by Juan Diego Montoya Rey on December 2, 2021

tengo una ventana la cual tiene un Boton en el medio, aqui esta el codigo:

class Prueba(QMainWindow):
    def __init__(self, parent=None):
        super(Prueba, self).__init__()
        
        self.setWindowTitle("Visualizador de Radiografias - INICM")
        self.setWindowIcon(QIcon("icono.png"))
        self.setWindowFlags(Qt.WindowCloseButtonHint | Qt.WindowMinimizeButtonHint | Qt.MSWindowsFixedSizeDialogHint)
        self.setFixedSize(650, 450)

        self.boton()
        

    def boton(self):

        boton1 = QPushButton("VENTANA 2", self)
        boton1.setObjectName("VENTANA 2")
        boton1.setToolTip("VENTANA 2")
        boton1.setGeometry(200, 180, 280, 45)


        boton1.clicked.connect(self.AccionB1)

Ahora lo que quiero es que mediante el boton1 se llame otro .py que es una ventana normal, el .py que quiero llamar es vent2.py, lo que hice fue importar en este codigo Vent2, de esta forma:

from Vent2 import *

y de esta forma lo llamo todo, lo que no se es como llamarlo en la accion del boton1, creo una funcion que ejecute ese codigo, algo asi:

def AccionB1(self):

    Vent2.exec_()

no me funciona.

2 Answers

Intentalo:

Vent1.py

from PyQt5.Qt import *
from Vent2 import AccionB1                                       # +++


class Prueba(QMainWindow):
    def __init__(self, parent=None):
        super(Prueba, self).__init__()
        
        self.setWindowTitle("Visualizador de Radiografias - INICM")
        self.setWindowIcon(QIcon("icono.png"))
        self.setWindowFlags(Qt.WindowCloseButtonHint | Qt.WindowMinimizeButtonHint | Qt.MSWindowsFixedSizeDialogHint)
        self.setFixedSize(650, 450)

        self.accion_b1 = AccionB1()                              # +++
        
        self.boton()
        

    def boton(self):
        boton1 = QPushButton("VENTANA 2", self)
        boton1.setObjectName("VENTANA 2")
        boton1.setToolTip("VENTANA 2")
        boton1.setGeometry(200, 180, 280, 45)
        
#        boton1.clicked.connect(self.AccionB1)
        boton1.clicked.connect(self.accion_b1.show)               # +++
 
 
if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    w = Prueba()
    w.show()
    sys.exit(app.exec_())    

Vent2.py

from PyQt5.Qt import *

#def AccionB1(self):
#    Vent2.exec_()

class AccionB1(QMainWindow):
    def __init__(self, parent=None):
        super(AccionB1, self).__init__(parent)

        self.widget = QWidget(self)
        self.setCentralWidget(self.widget)
        
        label = QLabel("<h2>es una ventana normal</h2>", alignment=Qt.AlignCenter)

        vlayout = QVBoxLayout(self.widget)
        vlayout.addWidget(label)        

introducir la descripción de la imagen aquí

Answered by S. Nick on December 2, 2021

Lo que está al final del método boton()

 boton1.clicked.connect(self.AccionB1)

Esa declaración si iriá en el método init.
¿Por qué?
Es que debes cargarlo en el init para que quede registrado el AccionB1 al momento de ejecutar.

class Prueba(QMainWindow):
    def __init__(self, parent=None):
        super(Prueba, self).__init__()
        self.setWindowTitle("Visualizador de Radiografias - INICM")
        self.setWindowIcon(QIcon("icono.png"))
        self.setWindowFlags(Qt.WindowCloseButtonHint | Qt.WindowMinimizeButtonHint |   Qt.MSWindowsFixedSizeDialogHint)
        self.setFixedSize(650, 450)
    
        self.boton()
        boton1.clicked.connect(self.AccionB1)

Nota: En dado caso que aún así no funcionará, sería ver como esta el archivo que estás importando, ya que otra manera de abrirlo es crear un método que cargue los componentes que requiere el archivo dos.

Answered by Leyco on December 2, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP