如何将新的 window 放置在 PyQt5 中现有的主要 window 位置(不是屏幕中心)?

How to place new window on existing main window location in PyQt5 (not center of screen)?

我有一个项目,用户按下按钮打开一个新的 window。如何将新 windows 设置为始终在主要 windows 位置之上打开? (当用户移动 windows 不要在屏幕中央打开它时,它位于主要 window 位置的顶部)

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import QtCore, QtGui, QtWidgets
import sys

class MainWindow(QtWidgets.QMainWindow):

def __init__(self):
    super(MainWindow, self).__init__()
    self.mainUI()

def mainUI(self):
    self.setWindowTitle('Estetica Arch Bt.')
    self.setGeometry(0,0,400,400)

    self.button = QPushButton('Open',self)
    self.button.clicked.connect(self.on_click_button)

    self._main = QtWidgets.QWidget()
    self.setCentralWidget(self._main)
    layout = QtWidgets.QGridLayout(self._main)
    layout.addWidget(self.button)

    self.show()

@pyqtSlot()
def on_click_button(self):
    self.pdw = ProjektDetailsWindow()
    self.pdw.show()


class ProjektDetailsWindow(QWidget):

def __init__(self):
    super().__init__()
    self.projektdetails()
    

def projektdetails(self):
    self.setFixedSize(200, 200)
    self.show()


def main():
    app = QApplication(sys.argv)
    ex = MainWindow()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

您可以 move() 新 window 在 show() 之后您想要的地方。

@pyqtSlot()
def on_click_button(self):
    self.pdw = ProjektDetailsWindow()
    self.pdw.show()
    self.pdw.move(self.pos())