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)
我没有错误,但这不会产生任何效果。
太容易了。PlotItem类没有setAxis方法。相反,有一个名为setAxisItems的方法。这段代码对我有用。
date_axis = pg.graphicsItems.DateAxisItem.DateAxisItem(orientation = 'bottom')
self.mainSoundPlot.setAxisItems(axisItems = {'bottom': date_axis})
Run Code Online (Sandbox Code Playgroud)