Как вызвать одно главное окно в другое главное окно в Qt (или PyQt) - PullRequest
0 голосов
/ 12 апреля 2011

В моем проекте я создал два основных окна, которые я хочу вызвать mainwindow2 из основного окна (которое работает).в mainwindow1 я уже использую app.exec_ () (PyQt) и чтобы показать maindow2 я использую maindow2.show () в событии нажатия кнопки, но ничего не показывает

1 Ответ

6 голосов
/ 12 апреля 2011

Вызов mainwindow2.show () должен работать для вас.Не могли бы вы привести более полный пример своего кода?Возможно, что-то не так в другом месте.

РЕДАКТИРОВАТЬ: Код обновлен, чтобы показать пример того, как скрыть и показать окна при открытии и закрытии других окон.

from PyQt4.QtGui import QApplication, QMainWindow, QPushButton, \
            QLabel, QVBoxLayout, QWidget
from PyQt4.QtCore import pyqtSignal

class MainWindow1(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent) 
        button = QPushButton('Test')
        button.clicked.connect(self.newWindow)
        label = QLabel('MainWindow1')

        centralWidget = QWidget()
        vbox = QVBoxLayout(centralWidget)
        vbox.addWidget(label)
        vbox.addWidget(button)
        self.setCentralWidget(centralWidget)

    def newWindow(self):
        self.mainwindow2 = MainWindow2(self)
        self.mainwindow2.closed.connect(self.show)
        self.mainwindow2.show()
        self.hide()

class MainWindow2(QMainWindow):

    # QMainWindow doesn't have a closed signal, so we'll make one.
    closed = pyqtSignal()

    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        self.parent = parent
        label = QLabel('MainWindow2', self)

    def closeEvent(self, event):
        self.closed.emit()
        event.accept()

def startmain():
    app = QApplication(sys.argv)
    mainwindow1 = MainWindow1()
    mainwindow1.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    import sys
    startmain()
...