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