ゲームカードを表す次のようなクラスがあります。テーブルには他にもカードが表示されていますが、クリックするとテーブルの中央に表示されるようにしたいと思います。ここで、テーブルの中央に別のカードが既に存在する可能性があります (中心が座標 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 属性 (継承された親でさえも) も、ラベルの座標を返すメソッドも見つかりません。できれば、すべてのウィジェットの座標をグローバル ディクショナリに記録し、カードを移動する必要があるたびにそのアイテムをループすることをお勧めします (それが最善の方法でしょうか、それとももっと効率的な方法があるでしょうか?)。