Как получить позицию виджета в pyqt5, используя метод макета

Как получить координаты виджета PyQt5 относительно родительского виджета? В частности, при использовании метода макета, в моем случае я использую метод макета QGridLayout.

Я попытался получить координаты виджетов, используя методы.x() и.y(). Но оба эти метода возвращают 0, я считаю, что это потому, что я использую метод макета, и эта точка ссылается на начальный угол виджета, что не помогает в моем случае.

Я также пытался использовать методы mapToGlobal() и mapToParent(), я не верю, что я использую их правильно, но вот несколько примеров того, как я пытался использовать эти два метода.

map_it = self.Play_label.mapFromParent(QPoint(1,1))
print ("Label coord: ", map_it)

map_it = self.Play_label.mapToParent(QPoint(1,1))
print ("Label coord: ", map_it)

Я также попытался добавить этот метод к самому виджету, в этом случае у меня есть виджет класса с именем Play_label, и я делаю метод в этом классе, который печатает метод mapToParent. Ниже я покажу пример.

def map_to_parent(self):
    print ("From Widget Coord: ", self.mapFromParent(QPoint(0,0)))

Но все они возвращают все, что я положил в качестве QPoint, например, первые два примера выведут PyQt5.QtCore.QPoint(1,1). В то время как последний пример выведет PyQt5.QtCore.QPoint(). Почему я не использую эти методы правильно?

По сути, я пытаюсь использовать QPropertyAnimation, чтобы изменить положение созданного мной QWidget, который представляет собой QLabel, для которого я установил Pixmap, а также различные другие функции. Обычно вы меняете геометрию, чтобы изменить положение виджета, но в моем случае это, конечно, не работает, потому что я использую метод макета. Вот пример этого кода.

self.animation.setDuration(3000)
self.animation.setStartValue(QRect(0,0,200,200))
self.animation.setEndValue(QRect(width_mul, height_mul, 150, 150))
#print ("Value: ", self.animation.currentValue())
#self.animation.valueChanged.connect(self.Play_label.changeImageSize)
#self.animation.setTargetObject(self.Play_label)
self.animation.start()

Если кто-то может объяснить мне, как получить координаты виджета из родительского виджета при использовании метода макета, который будет огромной помощью, или, возможно, я использую метод QPropertyAnimation() неправильно, я действительно не уверен, снова все, что я я пытаюсь сделать, это изменить положение виджета с помощью QPropertyAnimation, я хочу, чтобы он пришел со стороны и переместился туда, где виджет обычно расположен, для чего мне нужны координаты виджета или какой-то другой способ его перемещения Любой совет будет принята с благодарностью, спасибо заранее!

0 ответов

Другие вопросы по тегам