Как открыть второе окно из 1-го окна в pyqt?

У меня есть 2 формы, form_1 и form_2 (в другом классе и файле), я открою form_2 из form_1 с помощью кнопки, как создать об этом в Pyqt?

code form_1:

def retranslateUi(self, MainWindow):
 QtCore.QObject.connect(self.bt_form1, QtCore.SIGNAL(_fromUtf8("clicked()")), self.show_form2())
 MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
 self.bt_form1.setText(_translate("MainWindow", "FORM_1", None))

def show_form2(self):
 self.form2 = form2(self) # in here ??????
2 ответа

im все еще довольно новичок в pyqt, но я думаю, что вы можете сделать это так

def show_form2(self):
 newDialog = uic.loadUi(r"uifile.ui")
 newDialog.show()

или если вы подклассифицировали его, убедитесь, что вы импортируете его, если его в другом файле и используете

def show_form2(self):
 newDialog = subDialog.subDialog()
 newDialog.show()

edit - oh и убедитесь, что вы подключили его к кнопкам

self.bt_form1.clicked.connect(self.show_form2)


class Main(QMainWindow):

 def __init__( ... )

 def retranslateUi(self, MainWindow):
 QtCore.QObject.connect(self.bt_form1, QtCore.SIGNAL(_fromUtf8("clicked()")), self.show_form2())
 MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
 self.bt_form1.setText(_translate("MainWindow", "FORM_1", None))

 def show_form2(self):
 self.form2 = Form2(self)
 self.form2.show()

Ваш код Form2 должен выглядеть так:

class Form2(QDialog):

 def __init__(self, parent=None) .... 

 # do whatever #

licensed under cc by-sa 3.0 with attribution.