移动标签PyQt

时间:2012-10-15 15:32:36

标签: python pyqt pyqt4 qlabel

我有一个类似下面的类代表游戏卡。桌子上会显示更多的牌,但是当我点击一张牌时,它就会出现在桌子的中央。现在,桌子的中心可能已经有另一张牌了(我们假设中心位于坐标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属性(甚至在其继承的父项中也没有),也找不到返回标签坐标的方法。如果可以的话,我可能会记录全局词典中所有小部件的坐标,并在每次移动卡片时循环其项目(这是最好的方式还是更高效?)。

1 个答案:

答案 0 :(得分:1)

QLabel继承自QWidget,因此x()y()pos()和其他类似功能都可用。您也可以查看可以帮助您的the Window Geometry documentation。当您将卡片放在桌子的中央时,您可以使用相关信息更新某些字典或类似字典。如果你想在中心放一张新卡,只需阅读字典并根据其内容做相应的事情。