0

我如何获得相对于它的父小部件的 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 更改小部件的位置,我希望它从侧面进入并移动到小部件通常放置的位置,我需要小部件的坐标或其他方式来移动它,任何建议将不胜感激,在此先感谢您!

4

0 回答 0