0

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

4

1 に答える 1

2

QLabelから継承してQWidgetいるため、x()y()pos()およびその他の同様の機能をすべて使用できます。また、役立つWindow Geometry のドキュメントを参照することもできます。カードをテーブルの中央に置くと、辞書などを関連情報で更新できます。新しいカードを中央に置きたい場合は、辞書を読んで、その内容に従ってください。

于 2012-10-15T15:38:42.927 に答える