how to make a dialog or a popup window 可以留在 mainwindow 后面而不覆盖 mainwindow
how to make a dialog or a popup window can stay behind the mainwindow and don't cover the mainwindow
我是 pyqt5 的新手,我想要弹出一个 window 并让 window 可以留在主 window 后面并且不可点击(就像让新的 window作为另一个进程window)
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Demo(QMainWindow):
def __init__(self):
super().__init__()
test_button = QPushButton('test')
test_button.clicked.connect(self.onClick)
self.setCentralWidget(test_button)
def onClick(self):
# dlg = QDialog(self)
dlg = QMainWindow(self)
dlg.setWindowFlag(Qt.WindowStaysOnTopHint, False)
dlg.show()
app = QApplication([])
demo = Demo()
demo.show()
app.exec()
新的 window 总是留在主window,我需要 window 留在它后面。
void QWidget::move(int x, int y)
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Demo(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Main Window')
test_button = QPushButton('test')
test_button.clicked.connect(self.onClick)
self.setCentralWidget(test_button)
def onClick(self):
# dlg = QDialog(self)
dlg = QMainWindow(self)
dlg.setWindowTitle('Dialog Window')
dlg.move(self.geometry().x() + self.geometry().width() + 30, # <---
self.geometry().y() - 30)
dlg.setWindowFlag(Qt.WindowStaysOnTopHint, False)
dlg.show()
def sizeHint123(self):
return QSize(200, 200)
app = QApplication([])
demo = Demo()
demo.show()
app.exec()
更新
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Demo(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Main Window')
self.setWindowFlags(Qt.WindowStaysOnTopHint) # +++
test_button = QPushButton('test')
test_button.clicked.connect(self.onClick)
self.setCentralWidget(test_button)
def onClick(self):
# dlg = QDialog(self)
self.dlg = QMainWindow() # --- self
self.dlg.setWindowTitle('Dialog Window')
self.dlg.move(self.geometry().x() + self.geometry().width() + 30,
self.geometry().y() - 30)
# dlg.setWindowFlag(Qt.WindowStaysOnTopHint, False)
self.dlg.show()
def sizeHint123(self):
return QSize(200, 200)
app = QApplication([])
demo = Demo()
demo.show()
app.exec()
我是 pyqt5 的新手,我想要弹出一个 window 并让 window 可以留在主 window 后面并且不可点击(就像让新的 window作为另一个进程window)
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Demo(QMainWindow):
def __init__(self):
super().__init__()
test_button = QPushButton('test')
test_button.clicked.connect(self.onClick)
self.setCentralWidget(test_button)
def onClick(self):
# dlg = QDialog(self)
dlg = QMainWindow(self)
dlg.setWindowFlag(Qt.WindowStaysOnTopHint, False)
dlg.show()
app = QApplication([])
demo = Demo()
demo.show()
app.exec()
新的 window 总是留在主window,我需要 window 留在它后面。
void QWidget::move(int x, int y)
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Demo(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Main Window')
test_button = QPushButton('test')
test_button.clicked.connect(self.onClick)
self.setCentralWidget(test_button)
def onClick(self):
# dlg = QDialog(self)
dlg = QMainWindow(self)
dlg.setWindowTitle('Dialog Window')
dlg.move(self.geometry().x() + self.geometry().width() + 30, # <---
self.geometry().y() - 30)
dlg.setWindowFlag(Qt.WindowStaysOnTopHint, False)
dlg.show()
def sizeHint123(self):
return QSize(200, 200)
app = QApplication([])
demo = Demo()
demo.show()
app.exec()
更新
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Demo(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Main Window')
self.setWindowFlags(Qt.WindowStaysOnTopHint) # +++
test_button = QPushButton('test')
test_button.clicked.connect(self.onClick)
self.setCentralWidget(test_button)
def onClick(self):
# dlg = QDialog(self)
self.dlg = QMainWindow() # --- self
self.dlg.setWindowTitle('Dialog Window')
self.dlg.move(self.geometry().x() + self.geometry().width() + 30,
self.geometry().y() - 30)
# dlg.setWindowFlag(Qt.WindowStaysOnTopHint, False)
self.dlg.show()
def sizeHint123(self):
return QSize(200, 200)
app = QApplication([])
demo = Demo()
demo.show()
app.exec()