我有一个QWidget(登录表单)和QMainWindow(主表单)。问题是当我点击qwushbutton进入qwidget时,QmainWindow应该出现,但它没有。
class Ui_frmInicial(QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.resize(400, 250)
self.btnOpen = QtGui.QPushButton(self)
self.btnOpen.setGeometry(QtCore.QRect(110, 170, 111, 41))
self.btnOpen.clicked.connect(self.btnOpen_clicked)
def btnOpen_clicked(self):
print('ok ')
#mform = Ui_mainForm()
#mform.show()
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
ui = Ui_frmInicial()
ui.show()
sys.exit(app.exec_())
,另一个类是:
class Ui_mainForm(QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
print('ok')
self.resize(928, 695)
QtCore.QMetaObject.connectSlotsByName(self)
错误是什么?我从Ui_frmInicial运行项目。在控制台中,我在 init ()函数中显示'ok',但qmainwindow没有显示。提前致谢
答案 0 :(得分:1)
您需要确保在调用show
后不会立即删除您打开的窗口。
我建议你在主范围内定义窗口并用它初始化窗体:
class Ui_frmInicial(QWidget):
def __init__(self, window): #window parameter
QtGui.QWidget.__init__(self)
self.resize(400, 250)
self.btnOpen = QtGui.QPushButton(self)
self.btnOpen.setGeometry(QtCore.QRect(110, 170, 111, 41))
self.btnOpen.clicked.connect(lambda c: window.show()) #lambda callback
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
window = Ui_mainForm() #window definition
ui = Ui_frmInicial(window) #ui initialisation
ui.show()
sys.exit(app.exec_())
或者至少作为表格的一员。