2016-09-26 2 views
1

작은 파이썬 프로젝트를 만드는 동안 문제가 있습니다. 나는 Java에 익숙해졌으며 이것은 여전히 ​​나에게 새롭다. 문제는 QtCreator에서 UI 클래스를 만드는 것입니다. 그런 다음 .py으로 변환하고 내 프로젝트로 가져옵니다. UI 클래스를 시작하고 실행하는 클래스는 이제 main으로 간주됩니다. 문제는 내가 실제로는 main 클래스이고, app이이 클래스를 시작하여 UI를 시작하는 두 번째 클래스를 호출하는 클래스가 필요하다는 것입니다. 앱을 시작할 때 지금 요약하면 A > calls > B(UI)입니다. A > calls > B > init > C(UI)이 필요합니다. 그게 가능합니까? 내 생각은 B는 UI를 설정하고 실행하는 관리자 클래스 여야 만한다는 것입니다. 다음은 지금까지 내 작업 코드 : 1.Manager이 Python에서 UI 클래스를 시작하는 클래스 호출

class mainpanelManager(QtWidgets.QMainWindow, Ui_MainWindow): 
    def __init__(self): 
     super().__init__() 
     self.setupUi(self) 
if __name__ == "__main__": 
    app = QtWidgets.QApplication(sys.argv) 
    window = mainpanelManager() 
    window.show() 
    sys.exit(app.exec_()) 

을 클래스 - 및 UI 클래스는 일반적인 UI 생성 된 클래스입니다. 요소 개시 후 Ui_MainWindow를 실행 mainpaneManager이 경우

class Ui_MainWindow(QtGui.QWindow): 
    def setupUi(self, MainWindow): 

: 난 단지 생성자를 게시 할 예정입니다. mainpanelManager을 호출하는 3 클래스를 갖고 싶습니다. 이 __name__ 기능으로 무엇을합니까? 이동? 미리 감사드립니다.

답변

0

나는 당신이 요구하는지 이해 정확히 모르겠지만,이 같이 간단 할 것 같다 :

class Main(object): 
    def __init__(self): 
     self.window = MainPanelManager() 
     self.window.show()    

class MainPanelManager(QtWidgets.QMainWindow, Ui_MainWindow): 
    def __init__(self): 
     super().__init__() 
     self.setupUi(self) 
     self.settingsButton.clicked.connect(self.editSettings) 
     self.loadSettings() 

    def editSettings(self): 
     dialog = SettingsDialog(self) 
     if dialog.exec_() == QtWidgets.QDialog.Accepted: 
      self.loadSettings() 

    def loadSettings(self): 
     # do stuff to load settings... 

if __name__ == "__main__": 

    app = QtWidgets.QApplication(sys.argv) 
    main = Main() 
    sys.exit(app.exec_()) 
+0

병이 그것을 시도를 제공합니다. 이해 주셔서 감사합니다. 파이썬에서 클래스 호출을 이해하는 데 큰 어려움을 겪고 있습니다. 나는 꽤 복잡한 작업을 수행했지만 어떻게 할 수 있는지 이해하지 못하는 것 같다. Myclass myclass = new Myclass(); myclass.setVisible (true)'파이썬에서 ... – nephilimrising

+0

좋습니다. 내 마지막 문제는 아마도 아주 간단합니다. "설정"버튼을 클릭하면 설정으로 작은 창 (어쩌면 대화 상자)을 열고 싶습니다. 함수는'setupUI '이후에'MainPanelManager'에 설정 될 것입니다. 클래스의 생성자가 변경 될까요? 그렇게하는 방법. 나는 그 마지막 것을 약속한다. 그 정보를 최신 정보로 찾지 못했습니다. 나는 거의 파이썬을 그만두고 있었다. ... – nephilimrising

+0

@nephilimrising. 기본적인 코드를 제공하기 위해 코드 예제를 업데이트했습니다. [Python For Java Programmers] (http://python4java.necaiseweb.org/Main/TableOfContents)와 [Python Is Not Java] (http://dirtsimple.org/2004/12/python-is-news)를 사용해보십시오. not-java.html). – ekhumoro