Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在继承自qtwidts.QGraphicsPixmapItem的类中放置多个QPixmap?_Python_Pyqt - Fatal编程技术网

Python 如何在继承自qtwidts.QGraphicsPixmapItem的类中放置多个QPixmap?

Python 如何在继承自qtwidts.QGraphicsPixmapItem的类中放置多个QPixmap?,python,pyqt,Python,Pyqt,今天,我被QPixmap卡住了。我的类继承自qtwidts.QGraphicsPixmapItem,如下例所示 class graphicButton(QtWidgets.QGraphicsPixmapItem): def __init__(self): pixmapA = QtGui.QPixmap(r"img.png") QtWidgets.QGraphicsPixmapItem.__init__(self, pixmapA) sel

今天,我被QPixmap卡住了。我的类继承自
qtwidts.QGraphicsPixmapItem
,如下例所示

class graphicButton(QtWidgets.QGraphicsPixmapItem):
    def __init__(self):
        pixmapA = QtGui.QPixmap(r"img.png")

        QtWidgets.QGraphicsPixmapItem.__init__(self, pixmapA)
        self.setFlags(
            self.flags( )
            | QtWidgets.QGraphicsItem.ItemIsSelectable
            | QtWidgets.QGraphicsItem.ItemIsMovable
        )
    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            print("mouse left press")
            event.accept()
        elif event.button() == QtCore.Qt.RightButton:
            print("mouse right press")
            event.accept()
        elif event.button() == QtCore.Qt.MidButton:
            print("mouse middle press")
            event.accept()

它工作得很好,但是如果我想放多张图片呢?在我在谷歌发现的大多数情况下,您需要制作多个QGraphicsPixmapItem。在这种情况下,我无法再从QGraphicsPixItem继承,我必须选择QGraphicsItem,或者我缺少什么?

简单的解决方案是加载与其位置相关联的图像,例如,在以下情况下,我将图像放置在五角大楼的顶点中:

随机导入
从PyQt5导入QtCore、QtGui、QtWidgets
类GraphicsButton(QtWidgets.QGraphicsPixmapItem):
def u u init u u;(self,name,pixmap,parent=None):
super(图形按钮,self)。\uuu init(pixmap,父级)
self.setFlag(qtwidts.QGraphicsItem.ItemIsSelectable,True)
self.setFlag(qtwidts.QGraphicsItem.ItemIsMovable,True)
self.\u name=name
@财产
def名称(自我):
返回self.\u name
def鼠标压力事件(自身、事件):
如果event.button()==QtCore.Qt.LeftButton:
打印(“鼠标左键按下”)
elif event.button()==QtCore.Qt.RightButton:
打印(“鼠标右键按”)
elif event.button()==QtCore.Qt.MidButton:
打印(“鼠标中按”)
打印(self.name)
超级(GraphicsButton,self).mousePressEvent(事件)
类MainWindow(QtWidgets.QMainWindow):
def uuu init uuu(self,parent=None):
超级(主窗口,自我)。\uuuuu初始化\uuuuuuu(父级)
scene=qtwidts.qgraphicscene()
view=QtWidgets.QGraphicsView(场景)
self.setCentralWidget(视图)
#五角大楼坐标
数据=[
(“name1”,“img0.png”,QtCore.QPointF(0,-200)),
(“name2”,“img1.png”,QtCore.QPointF(-190,-62)),
(“name3”,“img2.png”,QtCore.QPointF(-118162)),
(“名称4”,“img3.png”,QtCore.QPointF(118162)),
(“name5”,“img0.png”,QtCore.QPointF(190,-62)),
]
对于数据中的名称、路径和位置:
item=GraphicsButton(名称,QtGui.QPixmap(路径))
场景.附加项(项目)
项目.设置位置(位置)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=主窗口()
w、 show()
sys.exit(app.exec_())

简单的解决方案是加载与其位置相关联的图像,例如,在以下情况下,我将图像放置在五角大楼的顶点中:

随机导入
从PyQt5导入QtCore、QtGui、QtWidgets
类GraphicsButton(QtWidgets.QGraphicsPixmapItem):
def u u init u u;(self,name,pixmap,parent=None):
super(图形按钮,self)。\uuu init(pixmap,父级)
self.setFlag(qtwidts.QGraphicsItem.ItemIsSelectable,True)
self.setFlag(qtwidts.QGraphicsItem.ItemIsMovable,True)
self.\u name=name
@财产
def名称(自我):
返回self.\u name
def鼠标压力事件(自身、事件):
如果event.button()==QtCore.Qt.LeftButton:
打印(“鼠标左键按下”)
elif event.button()==QtCore.Qt.RightButton:
打印(“鼠标右键按”)
elif event.button()==QtCore.Qt.MidButton:
打印(“鼠标中按”)
打印(self.name)
超级(GraphicsButton,self).mousePressEvent(事件)
类MainWindow(QtWidgets.QMainWindow):
def uuu init uuu(self,parent=None):
超级(主窗口,自我)。\uuuuu初始化\uuuuuuu(父级)
scene=qtwidts.qgraphicscene()
view=QtWidgets.QGraphicsView(场景)
self.setCentralWidget(视图)
#五角大楼坐标
数据=[
(“name1”,“img0.png”,QtCore.QPointF(0,-200)),
(“name2”,“img1.png”,QtCore.QPointF(-190,-62)),
(“name3”,“img2.png”,QtCore.QPointF(-118162)),
(“名称4”,“img3.png”,QtCore.QPointF(118162)),
(“name5”,“img0.png”,QtCore.QPointF(190,-62)),
]
对于数据中的名称、路径和位置:
item=GraphicsButton(名称,QtGui.QPixmap(路径))
场景.附加项(项目)
项目.设置位置(位置)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=主窗口()
w、 show()
sys.exit(app.exec_())

您要放置多少图像?你希望它们如何放置?也就是说,你希望它像一个矩阵吗?如果是这样的话,有多少行或列?我想用图片制作一些类似人类的东西,这些图片将成为按钮。所以我会说大约有30-40幅图像将被放置在QGraphicsView中的人类形状中。我从未尝试在编程中使用矩阵,所以我几乎无法在脑海中描绘它的样子。你想放置多少幅图像?你希望它们如何放置?也就是说,你希望它像一个矩阵吗?如果是这样的话,有多少行或列?我想用图片制作一些类似人类的东西,这些图片将成为按钮。所以我会说大约有30-40幅图像将被放置在QGraphicsView中的人类形状。我从来没有尝试过在编程中使用矩阵,所以我几乎无法想象它是什么样子。顺便问一下,你知道如何查询单击了哪个项目吗?类似于“event.clicked”或“event.selected”,因为我正在努力查找QEvent,但找不到任何有用的内容。@Vlad按时希望发生什么?您如何识别每个项目?每个项目都有一个id吗?现在我只希望它打印(点击的小部件(图像)并在将来将图片更改为不同的,但现在,我希望至少了解如何识别点击的内容。关于项目的id,我读到了,但我想我可以简单地查询单击的内容,并根据它将返回的信息进行更改。我想,不给每一个人我是不可能的