2017-04-14 33 views
1

這是一個mdiWindow。 openChildWindow動作打開新的子窗口。但我嘗試使用導入而不是類不工作。我只想簡短代碼行而不是長代碼行。我試圖使用child2.py只有main.py的一部分,但不工作。 import child2.py不會生成新的mdiChildWindow。Python3導入module.py只是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

對不起,我不是很瞭解你的問題,你可以嘗試稍微更清楚地解釋一下嗎? – Scheme

+0

actionChildWindow正在工作,但actionChildWindow2不起作用。 – Aruz

回答

0

好了,那裏有你的代碼的幾個問題。我認爲他們特別討論的是導入child2.py的問題。你的問題是,你想這樣的功能的內部導入:

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

真的是你應該做的,在喜歡你的其他進口文件的開始進口。由於你只導入一個類,我喜歡使用從這個語法。像這樣:

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

然後,你可以使用openChild2像在你的main.py文件中定義類一樣。