import sys from random import randint from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QPushButton, QWidget, QInputDialog, QLineEdit, \ QLabel class AnotherWindow(QWidget): """ This "window" is a Qwidget. If it has no parent, it will appear as a free-floating window. """ def __init__(self): super().__init__() layout = QVBoxLayout() self.label = QLabel("Another Window %d" % randint(0, 100)) layout.addWidget(self.label) self.setLayout(layout) class MainWindow(QMainWindow): def __init__(self): super().__init__() self.w = AnotherWindow() self.button = QPushButton("Press me fo Window!") self.button.clicked.connect(self.toggle_window) self.input = QLineEdit() self.input.textChanged.connect(self.w.label.setText) layout = QVBoxLayout() layout.addWidget(self.button) layout.addWidget(self.input) container = QWidget() container.setLayout(layout) self.setCentralWidget(container) def toggle_window(self, is_checked): if self.w.isVisible(): self.w.hide() else: self.w.show() app = QApplication(sys.argv) window = MainWindow() window.show() app.exec_()