Позиция виджета относительно родителя, если он у него есть, а если у него его нет, то относительно экрана, так что в случае MainWindow
, поскольку это окно, pos()
следует использовать, если это был виджет, у которого есть родитель, вы должны использовать self.mapToGlobal(QtCore.QPoint(0, 0))
, поскольку это верхняя левая позиция.
С другой стороны, начальная позиция каждого виджета QPoint(0, 0)
, и если это окно, ОС манипулирует своей позицией и перемещает ее, поэтому вы получаете значение (0, 0)
, поэтому в вашем случае вы должны отслеживать изменение позиции, например, с помощью moveEvent
:
import sys
from PyQt5 import QtCore, QtWidgets
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.resize(400, 200)
def moveEvent(self, e):
print(self.pos())
super(MainWindow, self).moveEvent(e)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())