当我将 qpushbutton 单击到 QWidget 中时,QMainwindow 不显示
QMainwindow doesn't show when I clicked a qpushbutton into a QWidget
我有一个 QWidget(登录表单)和 QMainWindow(主表单)。问题是当我在 qwidget 中点击一个 qpushbutton 时,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是:
class Ui_mainForm(QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
print('ok')
self.resize(928, 695)
QtCore.QMetaObject.connectSlotsByName(self)
会出现什么错误?我 运行 来自 Ui_frmInicial 的项目。在控制台中,我将 print 'ok' 显示到 init() 函数中,但 qmainwindow 未显示。提前致谢
您需要确保,您正在打开的 window 不会在调用 show
后立即被删除。
我建议,您在主作用域中定义 window 并用它初始化表单:
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_())
或者至少作为表单的成员。
我有一个 QWidget(登录表单)和 QMainWindow(主表单)。问题是当我在 qwidget 中点击一个 qpushbutton 时,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是:
class Ui_mainForm(QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
print('ok')
self.resize(928, 695)
QtCore.QMetaObject.connectSlotsByName(self)
会出现什么错误?我 运行 来自 Ui_frmInicial 的项目。在控制台中,我将 print 'ok' 显示到 init() 函数中,但 qmainwindow 未显示。提前致谢
您需要确保,您正在打开的 window 不会在调用 show
后立即被删除。
我建议,您在主作用域中定义 window 并用它初始化表单:
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_())
或者至少作为表单的成员。