2017-04-14 2 views
1

Dies ist ein mdiWindow. openChildWindow Aktion öffnet neues untergeordnetes Fenster. Aber ich versuche Import statt Klasse nicht zu benutzen. Ich möchte nur kurze Codezeilen statt langer Codezeilen. Ich versuche, child2.py nur einen Teil von main.py zu verwenden, aber nicht funktioniert. import child2.py macht kein neues mdiChildWindow.Python3 import module.py nur ein Code-Teil von main.py

main.py

import sys, time 
from PyQt5 import uic 
from PyQt5.QtWidgets import QMainWindow, QApplication 

class MainWindow(QMainWindow): 
    def __init__(self): 
     super(MainWindow, self).__init__() 
     uic.loadUi("mainWindow.ui",self) 

     self.actionChildWindow.triggered.connect(self.openChild)   
     self.actionChildWindow2.triggered.connect(self.openChild2) 

    def openChild(self): 
     childWindow=openChild("child.ui") 
     childWindow.add(self.mdiArea) 

    def openChild2(self): 
     import child2 
     child2.childWindow2=openChild2("child2.ui") 
     child2.childWindow2.add(self.mdiArea) 

class openChild(QMainWindow): 
    def __init__(self,modul): 
     super().__init__() 
     uic.loadUi(modul,self) 

    def add(self,addToMainWindow): 
     addToMainWindow.addSubWindow(self) 
     self.show() 

def main(): 
    app = QApplication(sys.argv) 
    ex = MainWindow() 
    ex.show() 
    sys.exit(app.exec_()) 

if __name__ =='__main__': 
    main() 

child2.py

class openChild2(QMainWindow): 
    def __init__(self,modul): 
     super().__init__() 
     uic.loadUi(modul,self) 

    def add(self,addToMainWindow): 
     addToMainWindow.addSubWindow(self) 
     self.show() 
+0

Sorry, ich verstehe Ihre Frage nicht wirklich, könnten Sie versuchen, es etwas deutlicher zu erklären? – Scheme

+0

actionChildWindow funktioniert, aber actionChildWindow2 funktioniert nicht. – Aruz

Antwort

0

Okay, so ein paar Probleme mit Ihrem Code Theres. Ich denke, sie sprechen gerade über das Problem mit dem Import von child2.py. Ihr Problem ist, dass Sie versuchen, innerhalb einer Funktion wie diese zu importieren:

def openChild2(self): 
    import child2 
    child2.childWindow2=openChild2("child2.ui") 
    child2.childWindow2.add(self.mdiArea) 

wirklich das, was Sie sollten am Anfang der Datei importiert wie Ihre anderen Importen tun. Da Sie nur eine Klasse importieren, verwende ich gerne die from-Syntax dafür. wie folgt:

Dann können Sie openChild2 verwenden, wie die Klasse in Ihrer Datei main.py definiert wurde.

Verwandte Themen