小编Dàv*_*agy的帖子

更改 QGraphicsItem 的颜色

我正在开发一个简单的软件,它有一个 GUI。(我正在使用 PyQt)我有 2 个单选按钮。如果选择第一个,则通过单击 Graphicsscene,GraphicsItem 将添加到场景中。我想要一个按钮,按下它可以改变这些点的颜色。颜色并不重要。例如,它可以是红色的。我怎么能这么做呢?谢谢你!

为了放置小部件,我使用了 Qt Designer,然后创建了一个名为 SimpleWindow 的子类。

这是代码: 点类:

from PyQt5.QtCore import QRectF, Qt
from PyQt5.QtWidgets import QGraphicsItem

class Point(QGraphicsItem):
    def __init__(self, x, y):
        super(Point, self).__init__()
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
        self.rectF = QRectF(0, 0, 4, 4)
        self.x=x
        self.y=y

    def boundingRect(self):
        return self.rectF

    def paint(self, painter=None, style=None, widget=None):
        painter.fillRect(self.rectF, Qt.black)

import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtGui import QPen, QBrush
from PyQt5.QtWidgets import QGraphicsScene
Run Code Online (Sandbox Code Playgroud)

现场:

class PointsGraphicsScene(QGraphicsScene):
    def __init__(self, parent=None):
        QGraphicsScene.__init__(self, parent)
        self.setSceneRect(0, 0, 200, 200) …
Run Code Online (Sandbox Code Playgroud)

python pyqt qgraphicsitem pyqt5

5
推荐指数
1
解决办法
7951
查看次数

PyQt:QGraphicsView中的鼠标事件

我想用 PyQt 用 Python 编写一个简单的程序。

我有一个 QGraphicsScene,我想执行以下操作:有 2 个使用两个单选按钮的选项:

  1. 用于生成点。这样,如果有人单击场景,就会出现一个椭圆。
  2. 用于选择点。这样,如果有人单击某个点,将返回所选点。

我对 PyQt 和 GUI 编程都有点陌生。我的主要问题是我不太明白 Qt 中鼠标事件是如何工作的。如果有人如此友善和耐心地向我解释鼠标事件的基础知识,并为我解决上述问题提供一些提示,我将非常感激。

我还附上一张图片,以形象化问题。 图形用户界面

我正在尝试做这个问题。为了放置小部件,我使用了 Qt Designer,然后创建了一个名为 SimpleWindow 的子类。

import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtGui import QPen, QBrush
from PyQt5.QtWidgets import QGraphicsScene
import points

class SimpleWindow(QtWidgets.QMainWindow, points.Ui_Dialog):

    def __init__(self, parent=None):
        super(SimpleWindow, self).__init__(parent)
        self.setupUi(self)

        self.graphicsView.scene = QGraphicsScene()
        self.graphicsView.setScene(self.graphicsView.scene)
        self.graphicsView.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)

        self.graphicsView.mousePressEvent = self.pixelSelect


    def pixelSelect(self, event):
        pen = QPen(QtCore.Qt.black)
        brush = QBrush(QtCore.Qt.black)

        x = event.x()
        y = event.y()

        if self.radioButton.isChecked():
            print(x, y) …
Run Code Online (Sandbox Code Playgroud)

python pyqt qgraphicsview qgraphicsscene pyqt5

4
推荐指数
1
解决办法
1万
查看次数