我有一个类似下面的类代表游戏卡。桌子上会显示更多的牌,但是当我点击一张牌时,它就会出现在桌子的中央。现在,桌子的中心可能已经有另一张牌了(我们假设中心位于坐标100x,100y处),所以如果是这种情况,我想把新牌放在它旁边,比如200x, 100y,但如何判断是否有100,100的东西?
from PyQt4 import QtGui, QtCore
class CardLabel(QtGui.QLabel):
def __init__(self, *args, **kwargs):
QtGui.QLabel.__init__(self, *args, **kwargs)
def mouseReleaseEvent(self, ev):
print 'clicked'
self.emit(QtCore.SIGNAL('clicked()'))
self.move(100, 100)
我找不到任何QLabel属性(甚至在其继承的父项中也没有),也找不到返回标签坐标的方法。如果可以的话,我可能会记录全局词典中所有小部件的坐标,并在每次移动卡片时循环其项目(这是最好的方式还是更高效?)。
答案 0 :(得分:1)
QLabel
继承自QWidget
,因此x()
,y()
,pos()
和其他类似功能都可用。您也可以查看可以帮助您的the Window Geometry documentation。当您将卡片放在桌子的中央时,您可以使用相关信息更新某些字典或类似字典。如果你想在中心放一张新卡,只需阅读字典并根据其内容做相应的事情。