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

Enclis

我试图将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]

这是我的主要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)

然后我尝试添加自定义AxisItem

self.ui_plot.getPlotItem().axes['bottom']['item'] = TimeAxisItem(orientation='bottom')

我没有任何错误,但这没有任何效果。

Enclis

由于有些人试图在这里找到一些东西,因此我将发布我简单但不优雅的解决方法。

将Qt Designer生成的模板转换为带有pyuic的python模板文件后,我通过替换相应的PlotWidget将自定义AxisItem直接添加到python模板文件中。所有这些都可以通过简单的bash脚本完成:

pyuic4 template.ui -o template.py 

match="from PyQt4 import QtCore, QtGui"
insert_class="from timeaxisitem_class import TimeAxisItem"
match_widget="self.plot = PlotWidget(Form)"
insert_timeaxis="self.plot = PlotWidget(Form, axisItems={'bottom': TimeAxisItem(orientation='bottom')})"

file="template.py"
sed -i "s/$match/$match\n$insert_class/" $file
sed -i "s/$match_widget/$insert_timeaxis/" $file

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将自定义映射添加到现有的 mapStruct 映射器?

如何使用现有的线框主题将自己的CSS添加到Sitecore SXA自定义组件中?

如何将新属性添加到现有的自定义对象并将值添加到 Powershell 中新添加的属性?

如何使用Java将自定义字段添加到Salesforce中的现有对象

如何将自定义类添加到 TinyMCE 中的自定义按钮?

如何将自定义地图和自定义数据添加到Highmaps?

NestJS如何将自定义Logger添加到自定义ExceptionFilter

如何将自定义文件添加到自定义文章列表页面

如何以编程方式将自定义NSToolbarItem添加到现有工具栏

将自定义字段添加到Dokan上的现有表单(wordpress / woocoomerce)

将自定义命令添加到qmake中的现有目标

将自定义函数添加到 Python 中的现有类

Rails将自定义路由添加到现有资源

将自定义样式添加到Mahapps.Metro现有样式

将自定义属性添加到现有视图

Laravel-将自定义样式添加到现有app.scss

将自定义字段添加到现有视图的问题

将自定义类和JSP添加到现有的第三方Java Web应用程序

如何将自定义xml添加到Oracle XML Publisher数据定义

如何将自定义 CSS 属性(如字体大小)添加到所有 Django 管理页面?

如何将自定义js添加到所有管理员模型中?詹戈

Odoo 9如何将自定义视图模板附加到现有视图中?

如何将自定义方法添加到ReasonReact组件?

如何将自定义按钮添加到AVPlayerViewController?

如何将自定义xtype添加到另一个视图?

如何将自定义类添加到某些路由的 body 元素 - nexjts

如何将自定义数据文件添加到Roblox DataModel?

如何将自定义事件添加到节点中的类?

如何将自定义字段添加到Stripe Checkout的弹出窗体中