2012-10-15 101 views
0

我有一個類如下代表一個遊戲卡。桌面上顯示的卡片數量更多,但是當點擊卡片時,它會顯示在桌子的中心位置。現在,桌子中間可能已經有另一張牌了(假設中心位於座標100x,100y),所以如果是這種情況,我想將新牌放在它旁邊,比如200x, 100y,但我怎麼知道在100,100處已經有東西了?移動標籤PyQt

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屬性(即使在它的繼承父項中),也沒有返回標籤座標的方法。如果我能的話,我可能會記錄所有小部件在全局字典中的座標,並且每次必須移動一張卡片時都會在其項目上循環播放(這是最好的方式,還是更有效率?)。從QWidget

回答

1

QLabel繼承所以x()y()pos()和其他類似功能都提供給它。你也可以看看the Window Geometry documentation,可以幫助你。當你把卡放在桌子的中心時,你可以更新一些字典或類似的相關信息。如果你想在中心放置一張新卡片,只需閱讀字典並根據其內容做相應的事情。

+0

謝謝文森特,我錯過了!但是,我怎麼知道在新座標上是否有東西? – Lorenzo