如何将自定义 AxisItem 添加到现有 PlotWidget?

enc*_*lis 5 python pyqt pyqt4 python-2.7 pyqtgraph

我正在尝试将pyqtgraph中的自定义AxisItem添加到由 Qt Designer 生成的现有PlotWidget。有相关的话题在这里,但与代码示例没有确切的答案,我不能评论,所以我创建了一个新的课题。

这是我的自定义AxisItem(基于代码):

import pyqtgraph as pg
import datetime

def int2td(ts):
    return(datetime.timedelta(seconds=float(ts)/1e6))

class TimeAxisItem(pg.AxisItem):
    def __init__(self, *args, **kwargs):
        super(TimeAxisItem, self).__init__(*args, **kwargs)
    def tickStrings(self, values, scale, spacing):
        return [int2dt(value).strftime("%H:%M:%S") for value in values]
Run Code Online (Sandbox Code Playgroud)

这是我的主要QtPlotter类:

from pyqtgraph.Qt import QtGui
from template_pyqt import Ui_Form # Ui_Form is generated by Qt Designer

class QtPlotter:
    def __init__(self):
        self.app = QtGui.QApplication([])
        self.win = QtGui.QWidget()
        self.ui = Ui_Form()
        self.ui.setupUi(self.win)
        self.win.show()

        self.ui_plot = self.ui.plot 
        self.ui_plot.showGrid(x=True, y=True)
Run Code Online (Sandbox Code Playgroud)

然后我尝试添加我的自定义AxisItem

self.ui_plot.getPlotItem().axes['bottom']['item'] = TimeAxisItem(orientation='bottom')
Run Code Online (Sandbox Code Playgroud)

我没有错误,但这不会产生任何效果。

Yas*_*abi 4

太容易了。PlotItem类没有setAxis方法。相反,有一个名为setAxisItems的方法。这段代码对我有用。

date_axis = pg.graphicsItems.DateAxisItem.DateAxisItem(orientation = 'bottom')
self.mainSoundPlot.setAxisItems(axisItems = {'bottom': date_axis})
Run Code Online (Sandbox Code Playgroud)