Dearpygui 学习

Dearpygui 学习

主窗口相关函数变化

from dearpygui.dearpygui import *
 #主窗口设定,title设定主窗口标题,设定宽度和高度
if __name__ == '__main__':
    setup_viewport()                                           
    set_viewport_title(title="YourTitle")
    set_viewport_height(805)
    set_viewport_width(1280)
    start_dearpygui()

在上一篇的学习中,我们可以看到在主窗口相关的设定函数中,有了许多的变更,其中最主要的变化就是将主窗口设定通过setup viewportl方法进行。

文件选择器窗口变化

在较早的版本中,是通过open_file_dialog 来打开文件选择器窗口

open_file_dialog(callback=apply_selected_file, extensions=".*,.py")

但是在新版本中,则变更为

add_file_dialog(lable="test", directory_selector=False, default_filename='', default_path='/home', id='file', filec_count=10)
add_file_extension("label="test1", parent='file', extension='.*)

需要通过额外设定extensio来设定需要展示的文件类型,在其中我们可以看到parent这个参数,便是非常重要的,前一篇已经讲过每个控件的ID,通过ID可以直接进行控件的值的设定,相关参数的变更,以及子属性,子控件的约束。

子窗口的设定和部分参数

with window(label="Test1", width=600, height=650, no_collapse=True, pos=[0,0], no_resize=True,id=1, no_move=True):
    add_text("This is a test:")

建议给每一个添加的控件添加一个ID。在子窗口的设定中,我们设定了他的布局起始位置pos = [0, 0],我们设定了他的高度和宽度,并且设定其不可通过鼠标拖动改变窗口大小。通过POS这个参数的设定,我们可以在主窗口中任意布置子窗口的位置,有点类似于tkinter的线性布局。

plot 绘制

plot作为dearpygui 中最为重要的一个功能,他提供了超多的绘图形式,在plot的绘图机数据处理,显示,以及刷新方面上个人感觉比matlabplotlib 要好用不少。唯一的缺点就是这个plot绘制的图形永远无法保存(目前官方是这样说的),在某些3D plot的渲染场景下也有着不小的优势。在这里建议通过官方的指导文档进行学习
https://dearpygui.readthedocs.io/en/stable_08/api-reference/plots.html
在这里,我便只展示自己用到的最基础的plot
由于我本人是做SSD测试的,因此也使用SSD的一个plot项目来进行说明。在SSD测试中有着三个比较重要的性能指标(BW,IOPS,LAT)
首先我们需要有一个窗口显示plot

with window(label="Plog", width=680, height=650, no_resize=True, no_collapse=True, pos=[602, 0], id=3, no_move=True):
    with plot(label="BW", height=200, id=4, parent=3, width=650):
        add_plot_legend(label="BWPlot")
        add_plot_axis(mvXAxis, label='times', id="times")
        add_plot_axis(mvYAxis, label='Read_BW',id="ReadBW")
        # set_axis_limits_auto("ReadBW")
        set_axis_limits_auto("times")
        add_line_series(x=readbw, y=count, label="ReadBW", parent=last_item(), id="readbw")
        add_plot_axis(mvYAxis, label='Write_BW', id="WriteBW")
        # set_axis_limits_auto("WriteBW")
        add_line_series(x=writebw, y=count, label="WriteBW", parent=last_item(), id="writebw")
    with plot(label="IOPS", height=200, id=5, parent=3, width=650):
        add_plot_legend(label="IOPSPlot")
        add_plot_axis(mvXAxis, label='times', id="times1")
        add_plot_axis(mvYAxis, label='Read_IOPS', id="ReadIops")
        # set_axis_limits_auto("ReadIops")
        set_axis_limits_auto("times1")
        add_line_series(x=readbw, y=count, label="ReadIops", parent=last_item(), id="readiops")
        add_plot_axis(mvYAxis, label='Write_IOPS',id="WriteIops")
        # set_axis_limits_auto("WriteIops")
        add_line_series(x=writebw, y=count, label="WriteIops", parent=last_item(), id="writeiops")
    with plot(label="LAT", height=200, id=6, parent=3, width=650):
        add_plot_legend(label="LatPlog")
        add_plot_axis(mvXAxis, label='times', id="times2")
        add_plot_axis(mvYAxis, label='Read_lat', id="Readlat")
        set_axis_limits_auto("times2")
        set_axis_limits_auto("Readlat")
        add_line_series(x=readbw, y=count, label="ReadLat", parent=last_item(), id="readlat")
        add_plot_axis(mvYAxis, label='Write_lat', id="Writelat")
        set_axis_limits_auto("Writelat")
        add_line_series(x=writebw, y=count, label="WriteLat", parent=last_item(), id="writelat")

在一个窗口中,我放置了三个plot ,用来分别显示BW,IOPS,LAT的实时数据曲线
效果图如下
在这里插入图片描述
在功能实现过程中,如果想要数据实时显示,则需要有一个单独的线程,实时对plot 中的line数据进行赋值,如果想要显示的数据不那么拥挤,则需要判断显示的数据点有多少个,超过一定数量则进行抛出。方法也很简单,只需要简单的判断一下X轴的数据点个数。这些都需要在单独的线程中实时进行

def bwplot():
    cosdatax = []
    cosdatay = []
    cosdataz = []
    for itemx in count :
        cosdatax.append(itemx)
    for itemy in readbw :
        cosdatay.append(itemy)
    for itemz in writebw :
        cosdataz.append(itemz)
    set_value("readbw",[cosdatax,cosdatay])
    set_value("writebw",[cosdatax,cosdataz])

以BW为例,通过set_value 来实时设定ID为 readbw的这一条line的数据,从而达到实时刷新的效果。当前由于此脚本测试需求时长仅在10min以内的小BS,或者BSSPLIT测试,因此并未做数据溢出后出栈的部分。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值