在Qt小部件中创建图例,并添加标签

时间:2019-01-12 23:35:44

标签: python python-3.x pyqt pyqt5 pyqtgraph

背景:

这是一个实时更新图,它通过QTimer()实例进行更新。

已尝试删除所有非必需的代码。缓冲区和通讯任务已删除,一个简单的数字数组已用于填充数据。

目标:

  1. 在一个pyqtplot中创建多个图(“实例化”?)
  2. 创建图例对象
  3. 使用当前值实时修改(更新)图例或创建标签项

问题:

  1. 更新图解时,它将创建一个具有相同名称的新图例项目,而不是替换当前对象。
      

    我的理解是,每次调用name =“ exampleText”时,图例项都会创建一个新的列表项,但是,文档使我认为这仅应在第一次调用时发生。我应该如何实例化此对象,以便可以正确地“调用”该对象?例如plot1 = dlg.graphicsView ... etc

  2. 不断更新图例/文本标签
      

    我想用当前值不断更新标签。理想情况下,这将是文本项,而不是图例,因为图例不应更改。在图表上更新文本值的最理想方法是什么?

简化的代码示例:

  

注意:.ui文件是pyqtgraph提升的graphicsView小部件,有关详细信息,请参见文档Embedding widgets inside PyQt applications

from PyQt5 import QtWidgets, uic, QtCore

import time         #Delay
import pyqtgraph    #Graphing

pyqtgraph.setConfigOption('background', 'w')    #Set pyqtplot background as white
app = QtWidgets.QApplication([])                #Instantiate instance of our application
dlg = uic.loadUi("EthernetUI.ui")               #Load the XML Ui file


dlg.graphicsView.addLegend()                    #Create a legend
plot1 = dlg.graphicsView

def graphUpdate():                              #Separate graphing function for QTimer
    try:
        plot1.clear()                           #Clears plot before rewrite
        plot1.plot([1,2,3,4,5,6,7,8,9,10], pen = 'r', name = "HELLO WORLD")

    except:
        print("EXCEPTION")
        pass


timer = QtCore.QTimer()                         #Instantiate QTimer
timer.timeout.connect(graphUpdate)              #When timer fires, run graphUpdate()
timer.start(1000)                                #Timer period of 100ms

dlg.show()                                      #Show GUI
app.exec()                                      #Execute GUI

0 个答案:

没有答案