Stack Overflow на русском Asked by PrinterOMG on September 27, 2020
Подксажите как получить координаты окна в PyQt5 или хоть как-нибудь определить его положение на экране. Мне нужно чтобы новое окно открывалось на месте предыдуещго, может есть какой-то другой способ. Пробовал через положение курсора при нажатии кнопки, но это совсем дичь получается. Спасибо!
Для получить координат окна и определения его положение на экране
хорошо подходит frameGeometry : const QRect
-
геометрия виджета относительно его родителя, включая любую рамку окна.
Другое дело когда вы собираетесь отслеживать местоположение окна на экране.
Попробуйте пример, измените его размер, а также попробуйте перетащить окно не изменяя его размер.
import sys
from PyQt5.QtCore import QTimeLine, QEvent
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.resize(600, 600)
self.w = self.size().width()
print(self.w)
self.label = QLabel('<h2 style="color: blue;">Hello PyQt5</h2>', self)
self.label.move(-100, 100)
self.timeline = QTimeLine(6000*2, self)
self.timeline.setFrameRange(0, self.w+100)
self.timeline.frameChanged.connect(self.set_frame_func)
self.timeline.setLoopCount(0)
self.timeline.start()
self.frame_geometry = None # !!!
def set_frame_func(self, frame):
self.label.move(-100+frame, 100)
if self.frame_geometry != self.frameGeometry(): # !!!
self.frame_geometry = self.frameGeometry()
print(f' set_frame_func: -> {self.frame_geometry}')
def resizeEvent(self, event):
super(Demo, self).resizeEvent(event)
self.w = self.size().width()
self.timeline.setFrameRange(0, self.w+100)
duration = self.w * 20
self.timeline.setDuration(duration)
self.frame_geometry = self.frameGeometry() # !!!
print(f'+++ releaseEvent -> {self.frame_geometry}')
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
Answered by S. Nick on September 27, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP