如何使用pyqt4在QGraphicsview中添加x,y标签

拉哈瓦

这是我的示例程序。当我需要为 x 轴绘制一条线并为 y 轴绘制 y 标签时,请帮助我如何向场景添加一条线和标签。我尝试了不同的方法,但没有得到正确的输出。所以请帮助我如何向场景添加标签。请给我任何解决此任务的建议。提前致谢。

下面给出的是我尝试过的代码:

import sys
from pyface.qt import QtGui, QtCore
# class ScanView(QtGui.QGraphicsView):
#     def __init__(self,X=5, Y=5,parent=None):
#         super(ScanView, self).__init__(parent)
class DemoApp(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(DemoApp, self).__init__()
        self.w= QtGui.QGridLayout()
        self.v= QtGui.QGraphicsView()
        self.w.addWidget(self.v)
        self.widget = QtGui.QWidget()
        self.widget.setLayout(self.w)
        self.setCentralWidget(self.widget)
        self._squares = []

        n_rows, n_cols = 3, 2
        squareLB = 50
        label = QtGui.QLabel("xaxis")
        label1 = QtGui.QLabel("yaxis")
        self._scene = QtGui.QGraphicsScene()
        mytext1 = QtGui.QGraphicsSimpleTextItem('label')
        self._scene.addItem(mytext1)
        mytext2 = QtGui.QGraphicsSimpleTextItem('label1')
        self._scene.addItem(mytext2)
        self.v.setScene(self._scene)

        self.pen = QtGui.QPen(QtCore.Qt.DotLine)
        self.pen.setColor(QtCore.Qt.red)

        width, height = (2 + 2)*squareLB, (3 + 2)*squareLB
        self._scene = QtGui.QGraphicsScene(0, 0, max(708, width), height)

        p = squareLB if width > 708 else (708.0-2*squareLB)/2.0

        for i in range(n_rows):
            for j in range(n_cols):
                it = self._scene.addRect(QtCore.QRectF(0,0,squareLB,squareLB),self.pen)
                it.setPos(p + j*squareLB, i*squareLB)

                self._squares.append(it)

        self.v.setScene(self._scene)
class Settings(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Settings, self).__init__(parent)

        self.folder = QtGui.QPushButton("Folder", clicked=self.showSettings)
        central_widget = QtGui.QWidget()
        self.setCentralWidget(central_widget)
        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(self.folder)
        self.scrollArea = QtGui.QScrollArea(widgetResizable=True)
        self.scrollArea.setBackgroundRole(QtGui.QPalette.Light)
        hlay = QtGui.QHBoxLayout(central_widget)
        hlay.addLayout(vbox)
        hlay.addWidget(self.scrollArea)
        self.setGeometry(200, 100, 300, 300)
    def showSettings(self):
        self.view = DemoApp()
        self.newwidget = QtGui.QWidget()
        hlay = QtGui.QHBoxLayout(self.newwidget)
        hlay.addWidget(self.view)
        self.scrollArea.setWidget(self.newwidget)
def main():
    app = QtGui.QApplication(sys.argv)
    ex = Settings()
    ex.show()
    sys.exit(app.exec_())
if __name__ == '__main__':
    main()

在此处输入图片说明

埃利亚内斯克

您可以使用 QpainterPath 来绘制箭头和一些数学来设置位置:

class DemoApp(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(DemoApp, self).__init__()

        self._squares = []
        n_rows, n_cols = 5, 4
        squareLB = 50

        self.widget = QtGui.QWidget()
        grid= QtGui.QGridLayout(self.widget)
        self.v = QtGui.QGraphicsView()
        grid.addWidget(self.v)
        self.setCentralWidget(self.widget)

        width, height = (2 + 2)*squareLB, (3 + 2)*squareLB
        self._scene = QtGui.QGraphicsScene(0, 0, max(708, width), height)
        self.v.setScene(self._scene)

        pen = QtGui.QPen(QtCore.Qt.red, 0.0, QtCore.Qt.DotLine)
        p = squareLB if width > 708 else (708.0-2*squareLB)/2.0

        for i in range(n_rows):
            for j in range(n_cols):
                it = self._scene.addRect(QtCore.QRectF(0,0,squareLB,squareLB), pen)
                it.setPos(p + j*squareLB, i*squareLB)
                self._squares.append(it)

        path_x = QtGui.QPainterPath()
        path_x.lineTo(squareLB*n_cols/2, 0)
        path_x.lineTo(squareLB*n_cols/2 - 0.2*squareLB, -0.2*squareLB)
        path_x.lineTo(squareLB*n_cols/2, 0)
        path_x.lineTo(squareLB*n_cols/2 - 0.2*squareLB, +0.2*squareLB)
        pen = QtGui.QPen("green")
        pen.setWidth(2)
        item_path = self._scene.addPath(path_x, pen)
        item_path.setPos(p, (i+1.2)*squareLB)
        mytext1 = self._scene.addText("X")
        mytext1.setPos(p + j*squareLB/2, (i+1.2)*squareLB)

        path_y = QtGui.QPainterPath()
        path_y.lineTo(0, -squareLB*n_rows/2)
        path_y.lineTo(-0.2*squareLB, -squareLB*n_rows/2 + 0.2*squareLB)
        path_y.lineTo(0, -squareLB*n_rows/2)
        path_y.lineTo(+0.2*squareLB, -squareLB*n_rows/2 + 0.2*squareLB)
        pen = QtGui.QPen("red")
        pen.setWidth(2)
        item_path = self._scene.addPath(path_y, pen)
        item_path.setPos(p - 0.2*squareLB, (i+1)*squareLB)
        mytext1 = self._scene.addText("Y")
        mytext1.setPos(p - 0.7*squareLB, (i+1)*squareLB/2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用 pyqt4 制作闪烁的标签或小部件

来自分类Dev

使用pyqt4在设计的qtdesigner ui中添加treeview

来自分类Dev

如何使用PyQt4在Ubuntu中播放声音?

来自分类Dev

如何使用InternalId在PyQt4的QTreeView中获取文本

来自分类Dev

如何使用PyQt4在Ubuntu中播放声音?

来自分类Dev

PyQt4:将文本添加到QGraphicsView(不是场景)

来自分类Dev

PyQt:如何在PyQt4中的QGroupBox内添加网格布局

来自分类Dev

如何在启动画面pyqt4中添加进度栏

来自分类Dev

如何在特定单元格 pyqt4 中添加列表

来自分类Dev

如何使用PyQt4添加提交,输出和输入框?

来自分类Dev

PyQT4:在Qtableview中添加组合框

来自分类Dev

在 pyqt4 中使用散点图项 x 轴中的时间

来自分类Dev

在 PyQt4 (python) 中单击按钮时如何将文本字符串显示为标签?

来自分类Dev

如何使用给定的数据集在 highchart 中的 x 轴标签下添加 y 轴的值

来自分类Dev

如何删除QtString中的错误。我正在使用pyqt4和Python 3.4.3

来自分类Dev

如何在使用 pyqt4 的 gridlayout 中增加特定按钮的大小

来自分类Dev

PyQt4菜单功能将新标签添加到QTabWidget

来自分类Dev

PyQt4菜单功能将新标签添加到QTabWidget

来自分类Dev

如何刷新嵌入在PYQT4中的MatPlotlib?

来自分类Dev

如何在Anaconda中安装PyQt4?

来自分类Dev

在PyQt4中我如何启动窗口

来自分类Dev

如何刷新嵌入在PYQT4中的MatPlotlib?

来自分类Dev

如何在PyQt4中旋转圆形鼠标

来自分类Dev

如何使用pyqt4创建圆形图像?

来自分类Dev

使用pyqt4在python中QLabel上的clickable事件?

来自分类Dev

在PyQt4中将QThreadPool与QRunnable结合使用

来自分类Dev

PyQt4 使用类中函数的全局变量

来自分类Dev

如何将 PyQt4 中的选项卡添加到我的文本编辑器?

来自分类Dev

将 lineEdit 值设置为另一个类中的标签(Pyqt4)

Related 相关文章

  1. 1

    如何使用 pyqt4 制作闪烁的标签或小部件

  2. 2

    使用pyqt4在设计的qtdesigner ui中添加treeview

  3. 3

    如何使用PyQt4在Ubuntu中播放声音?

  4. 4

    如何使用InternalId在PyQt4的QTreeView中获取文本

  5. 5

    如何使用PyQt4在Ubuntu中播放声音?

  6. 6

    PyQt4:将文本添加到QGraphicsView(不是场景)

  7. 7

    PyQt:如何在PyQt4中的QGroupBox内添加网格布局

  8. 8

    如何在启动画面pyqt4中添加进度栏

  9. 9

    如何在特定单元格 pyqt4 中添加列表

  10. 10

    如何使用PyQt4添加提交,输出和输入框?

  11. 11

    PyQT4:在Qtableview中添加组合框

  12. 12

    在 pyqt4 中使用散点图项 x 轴中的时间

  13. 13

    在 PyQt4 (python) 中单击按钮时如何将文本字符串显示为标签?

  14. 14

    如何使用给定的数据集在 highchart 中的 x 轴标签下添加 y 轴的值

  15. 15

    如何删除QtString中的错误。我正在使用pyqt4和Python 3.4.3

  16. 16

    如何在使用 pyqt4 的 gridlayout 中增加特定按钮的大小

  17. 17

    PyQt4菜单功能将新标签添加到QTabWidget

  18. 18

    PyQt4菜单功能将新标签添加到QTabWidget

  19. 19

    如何刷新嵌入在PYQT4中的MatPlotlib?

  20. 20

    如何在Anaconda中安装PyQt4?

  21. 21

    在PyQt4中我如何启动窗口

  22. 22

    如何刷新嵌入在PYQT4中的MatPlotlib?

  23. 23

    如何在PyQt4中旋转圆形鼠标

  24. 24

    如何使用pyqt4创建圆形图像?

  25. 25

    使用pyqt4在python中QLabel上的clickable事件?

  26. 26

    在PyQt4中将QThreadPool与QRunnable结合使用

  27. 27

    PyQt4 使用类中函数的全局变量

  28. 28

    如何将 PyQt4 中的选项卡添加到我的文本编辑器?

  29. 29

    将 lineEdit 值设置为另一个类中的标签(Pyqt4)

热门标签

归档