В моем проекте я создал два основных окна, которые я хочу вызвать mainwindow2 из mainwindow1 (которое работает). в mainwindow1 я уже использовал app.exec_() (PyQt), и чтобы показать maindow2, я использую maindow2.show() в событии нажатия кнопки, но ничего не показывает
Как вызвать одно главное окно в другое главное окно в Qt (или PyQt)
Ответы (1)
Вызов mainwindow2.show() должен работать на вас. Не могли бы вы привести более полный пример вашего кода? Может где-то еще что-то не так.
EDIT: Код обновлен, чтобы показать пример того, как скрывать и показывать окна при открытии и закрытии других окон.
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()
person
Gary Hughes
schedule
12.04.2011
спасибо серый наконец сделал. но я хочу, чтобы окно 1 было отключено, а окно 2 включено, и когда окно 2 закрывается, тогда окно 1 становится доступным
- person Arjun Jain; 12.04.2011
Я изменил код так, что когда отображается второе окно QMainWindow, первое скрывается. Когда второе окно QMainWindow будет закрыто, первое снова будет показано.
- person Gary Hughes; 12.04.2011
Большое спасибо за ваш код @GaryHughes, я боролся с этим. Моя ошибка заключалась в том, что я не отправлял первый экран во второй. Можете ли вы немного объяснить, зачем нам QMainWindow.__init__(self, parent) send parent? Имеет смысл иметь связь между первым и вторым окном, но я не могу полностью понять, зачем нам нужно отправлять родителя в конструктор supers. Еще раз большое спасибо
- person Can; 04.01.2016