Dan*_*ank 2 python qt pyqt pyqt4
考虑这个非常简单的示例,您可以在QGraphicsScene周围拖动一个方块(使用PyQt,C++用户读取self为this)
import sys
from PyQt4 import QtGui, QtCore
class MainWindowUi(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.scene = Scene(0, 0, 300, 300, self)
self.view = QtGui.QGraphicsView()
self.setCentralWidget(self.view)
self.view.setScene(self.scene)
self.scene.addItem(Square(0,0,50,50))
class Scene(QtGui.QGraphicsScene):
def mousePressEvent(self, e):
self.currentItem = self.itemAt(e.pos())
print (self.currentItem)
QtGui.QGraphicsScene.mousePressEvent(self, e)
class Square(QtGui.QGraphicsRectItem):
def __init__(self, *args):
QtGui.QGraphicsRectItem.__init__(self, *args)
self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True)
self.setFlag(QtGui.QGraphicsItem.ItemIsSelectable, True)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
win = MainWindowUi()
win.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
当您在场景中单击鼠标时,您应该看到一个打印语句,告诉您单击了正方形或没有任何东西(即无).如果您只是启动程序并单击正方形,则此方法有效.
现在将方块拖离左上角并再次单击它.即使单击正方形,此时itemAt()也会返回None.
这是怎么回事?
| 归档时间: |
|
| 查看次数: |
1069 次 |
| 最近记录: |