2011-07-09 10 views
0

pytq4で別のウィンドウを呼び出す方法は? たとえば、私は2つの別々のフォームを持っています。ログインフォームのボタンをクリックすると、2番目のフォームが表示されます。pyqt4 pythonで別のウィンドウを呼び出す方法は?

EDITED: たとえば、このログイン用のダイアログがあります。 ユーザーがボタンをクリックすると、main.pyが表示され、このダイアログが閉じます。

PyQt4インポートQtCoreからLOGIN.py 、QtGui

class Ui_Dialog(object): 
    def setupUi(self, Dialog): 
     Dialog.setObjectName("Dialog") 
     Dialog.resize(379, 184) 
     self.buttonBox = QtGui.QDialogButtonBox(Dialog) 
     self.buttonBox.setGeometry(QtCore.QRect(20, 130, 341, 32)) 
     self.buttonBox.setOrientation(QtCore.Qt.Horizontal) 
     self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) 
     self.buttonBox.setObjectName("buttonBox") 

     self.retranslateUi(Dialog) 
     QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), Dialog.accept) 
     QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), Dialog.reject) 
     QtCore.QMetaObject.connectSlotsByName(Dialog) 

    def retranslateUi(self, Dialog): 
     Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) 


if __name__ == "__main__": 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    Dialog = QtGui.QDialog() 
    ui = Ui_Dialog() 
    ui.setupUi(Dialog) 
    Dialog.show() 
    sys.exit(app.exec_()) 

MAIN.py

from PyQt4 import QtCore, QtGui 

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName("MainWindow") 
     MainWindow.resize(595, 315) 
     self.centralwidget = QtGui.QWidget(MainWindow) 
     self.centralwidget.setObjectName("centralwidget") 
     MainWindow.setCentralWidget(self.centralwidget) 

     self.retranslateUi(MainWindow) 
     QtCore.QMetaObject.connectSlotsByName(MainWindow) 

    def retranslateUi(self, MainWindow): 
     MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) 
+0

いくつかの時点で、あなたは他のフォームを表示させるために)(form.showを呼び出す必要があります。あなたのプログラムに関する詳細はほとんどないので、より具体的なことは難しいです。 – Luke

答えて

0

私は似たような状況を持っていたし、これは私がやったものです。理想的なソリューションのように感じることはありませんが、それは私のために働いた。

  import Main 
      self.main = Main.Form(user, loginWindow=self) 

      self.hide()   
      self.main.show() 

      # You can do self.close() here OR 
      # loginWindow.close() from Main.py 
      self.close() 

Main.py

class Form(QWidget): 
    def __init__(self, user, parent=None, loginWindow=None): 
     super(Form, self).__init__(parent) 
     # etc... 
+0

iveはコードを試しましたが、AttributeError: 'module'オブジェクトに 'Form'属性がありません。 – unice

+0

私のMain.pyクラス定義 'class Form(QWidget): def __init __(self、user、parent = None 、loginWindow = None): super(フォーム、自己).__ init __(親) ' –

関連する問題