增量时间与内部时钟

Dear PyGui 有一个内置的时钟,用于检查应用程序运行的总时间 get_total_time,该时间以秒为单位。通过 get_delta_time() 方法,我们可以检查渲染的每帧之间的时间差,同样是以秒为单位。

from dearpygui.core import *
from dearpygui.simple import *add_additional_font('三极中柔宋.ttf', 18, glyph_ranges='chinese_simplified_common')def on_render(sender, data):delta_time = str(round(get_delta_time(), 4))total_time = str(round(get_total_time(), 4))set_value("delta_time", delta_time)set_value("total_time", total_time)with window("Tutorial"):add_text("应用运行的总时间: ")add_same_line()add_label_text("##total_time_text", source="total_time")add_text("应用刷新的时间差: ")add_same_line()add_label_text("##delta_time_text", source="delta_time")
set_render_callback(callback=on_render)start_dearpygui()

精灵(Sprites)

“精灵(Sprites)” 的概念通常用于游戏开发中,而 DearPyGui 是对 Dear ImGui 游戏类框架的包装,因此, DearPyGui 中也有 精灵 这个概念。从技术上讲,精灵 就是一个可以不断变化的图片,这些变化包括:位置移动、旋转(以自身几何中心或以某个屏幕坐标为轴)、放大缩小、运动(按一定时间间隔连续显示一系列图像,形成运动效果)。

通过带有 tag 的图像、get_delta_time 和渲染时触发的 set_render_callback 回调方法,我们可以创建一个 精灵角色(Sprite Character),我们会用到下面这张图像:

再通过 add_drawing 开始绘制,就可以通过具体的绘制方法来添加控件了。同样的,画布的原点位于左下角。

from dearpygui.core import *
from dearpygui.simple import *add_additional_font('三极中柔宋.ttf', 18, glyph_ranges='chinese_simplified_common')def on_render(sender, data):delta_draw_time = get_data("delta_draw_time")draw_speed = get_value("Draw Pause")if delta_draw_time > draw_speed:if get_value("Fly Mode") == 0:if get_data("sprite1"):draw_image("Drawing_1", 'SpriteMapExample.png', top_left, pmax=bottom_right, uv_min=[.7690, 0],uv_max=[.8074, .10], tag="sprite")add_data("sprite1", False)else:draw_image("Drawing_1", 'SpriteMapExample.png', top_left, pmax=bottom_right, uv_min=[.8074, 0],uv_max=[.8461, .10], tag="sprite")add_data("sprite1", True)else:if get_data("sprite1"):draw_image("Drawing_1", 'SpriteMapExample.png', top_left, pmax=bottom_right, uv_min=[.8464, 0],uv_max=[.8848, .10], tag="sprite")add_data("sprite1", False)else:draw_image("Drawing_1", 'SpriteMapExample.png', top_left, pmax=bottom_right, uv_min=[.8851, 0],uv_max=[.9235, .10], tag="sprite")add_data("sprite1", True)add_data("delta_draw_time", 0)else:add_data("delta_draw_time", delta_draw_time + get_delta_time())set_main_window_size(500, 500)with window("Tutorial"):add_drawing("Drawing_1", width=120, height=120)top_left = [100, 100]bottom_right = [50, 50]draw_image("Drawing_1", 'SpriteMapExample.png', top_left, pmax=bottom_right, uv_min=[.7687, 0], uv_max=[1, .10],tag="sprite")add_text("飞行模式:")add_radio_button("Fly Mode", items=["禁用", "启用"], default_value=0)add_slider_float("Draw Pause", label="快~慢", default_value=0.1, min_value=0.0, max_value=1.0,tip="通过等待 Elapsed Time 来降低绘制速度", format="%.4f")set_render_callback(on_render)add_data("delta_draw_time", 0.0)add_data("sprite1", True)start_dearpygui()

表格

Dear PyGui 有一个调用简单的表格 API,可以实现静态和动态的表格。先通过调用 add_table() 方法以启动表格控件,然后如果要编辑表格,可以使用 add_row()add_column() 方法将行/列追加到表格的最后。

另外,还可以使用 insert_rowinsert_column 方法插入行/列,列和行根据其 ***_index 参数插入,如果指定的 ***_index 参数已经存在,则会采取覆盖操作。默认情况下,添加或插入的行/列将用空值填充单元格。

from dearpygui.core import *
from dearpygui.simple import *add_additional_font('三极中柔宋.ttf', 18, glyph_ranges='chinese_simplified_common')with window("Tutorial"):add_table("Table Example", ["标题 0", "标题 1"])add_row("Table Example", ["行 0", "文本内容"])add_row("Table Example", ["行 2", "文本内容"])add_column("Table Example", "标题 3", [{'a': 1}, {'b': 2}])insert_row("Table Example", 1, ["行 1", "插入行", "插入行"])insert_column("Table Example", 2, "标题 2", ["插入列", "插入列", "插入列"])start_dearpygui()

此外,标题和单元格可以重命名/更改。

from dearpygui.core import *
from dearpygui.simple import *add_additional_font('三极中柔宋.ttf', 18, glyph_ranges='chinese_simplified_common')def modify_tables(sender, data):log_debug(f"表格名称: {sender}")coord_list = get_table_selections("Table Example")log_debug(f"选中的单元格 (坐标): {coord_list}")for coordinates in coord_list:set_table_item("Table Example", coordinates[0], coordinates[1], "新值")set_headers("Table Example", ["新标题 0", "新标题 1", "新标题 2"])show_logger()with window("Tutorial"):add_spacing(count=5)add_button("修改选定的表值", callback=modify_tables)add_spacing(count=5)add_table("Table Example", ["标题 0", "标题 1"])add_row("Table Example", ["文本内容", "文本内容"])add_row("Table Example", ["文本内容", "文本内容"])add_column("Table Example", "标题 2", ["文本内容", "文本内容"])add_row("Table Example", ["文本内容"])start_dearpygui()

上面的两个栗子中,表格的单元格是可选的,这意味着我们可以将回调方法应用于表格,并获取单元格中的内容。

from dearpygui.core import *
from dearpygui.simple import *add_additional_font('三极中柔宋.ttf', 18, glyph_ranges='chinese_simplified_common')def table_printer(sender, data):log_debug(f"表格名称: {sender}")coord_list = get_table_selections("Table Example")log_debug(f"选中的单元格 (坐标): {coord_list}")names = []for coordinates in coord_list:names.append(get_table_item("Table Example", coordinates[0], coordinates[1]))log_debug(names)show_logger()with window("Tutorial"):add_table("Table Example", ["标题 0", "标题 1"], callback=table_printer)add_row("Table Example", ["文本内容", "文本内容"])add_row("Table Example", ["文本内容", "文本内容"])add_column("Table Example", "标题 3", ["文本内容", "文本内容"])add_row("Table Example", ["文本内容"])start_dearpygui()

Python DearPyGui 常用控件二相关推荐

  1. Python DearPyGui 常用控件一

    菜单栏 菜单栏是一个 GUI 应用中重要的控件,始终显示在窗口顶部,并具有三个主要部分: menu_bar -- 主菜单功能区 menu -- 下拉菜单或子菜单 add_menu_item -- 可以 ...

  2. python 选择文件对话框插件_Python DearPyGui 常用控件一

    菜单栏 菜单栏是一个 GUI 应用中重要的控件,始终显示在窗口顶部,并具有三个主要部分: menu_bar -- 主菜单功能区 menu -- 下拉菜单或子菜单 add_menu_item -- 可以 ...

  3. python entry_tkinter常用控件演示(Entry)

    Entry是 tkinter 中比较常用的控件,它通常用来接收字符串的输入,这个控件使得用户可以输入编辑一行文字:如果输入文字过长(超过Entry的可显示宽度),文字便会自动向后滚动,这种情况下没法在 ...

  4. Python Tkinter 常用控件空间位置摆放

    几何管理 Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,以下是Tkinter公开的几何管理类:包.网格.位置. from Tkinter import*#初始化Tk() myWin ...

  5. 鸡啄米之VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)

    目录 一.目的: 1.点击列表框某个变量后,编辑框就显示出来这个变量名字 一.参考: 1.VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox) ①总结:good:亲测有效,适合多 ...

  6. VS2010/MFC编程入门之二十(常用控件:静态文本框)

    上一节鸡啄米讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始鸡啄米将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组 ...

  7. MFC编程入门之二十(常用控件:静态文本框)

    上一节讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控 ...

  8. wxpython制作表格界面_[Python] wxPython 菜单栏控件学习总结(原创)

    1.总结 1.大体创建过程 1.创建一个 菜单栏 : menuBar = wx.MenuBar() 相当于这个白色地方,没有File这个菜单 2.创建 菜单 : fileMenu = wx.Menu( ...

  9. [Python] wxPython 基本控件 (转)

    转自:http://www.cnblogs.com/wangjian8888/p/6028777.html 一.静态文本控件 wx.StaticText(parent, id, label, pos= ...

最新文章

  1. HDU 4352 XHXJ#39;s LIS(数位dpamp;状态压缩)
  2. python获取天气信息写入原有的excel文档
  3. 项目启动,数据库连接错误:SQLNonTransientConnectionException: Could not create connection to database server
  4. Zookeeper相关知识
  5. 将Session写入Memcache
  6. 外媒:特斯拉CEO马斯克加入反对英伟达收购Arm交易行列
  7. Spring Boot学习总结(4)——使用Springloaded进行热部署
  8. IntelliJ IDEA 创建Java Web项目
  9. 制作OTA U盘升级包
  10. 我是如何学习Android源码的
  11. oracle视频经典教程,甲骨论经典版课程 Oracle DBA视频教程 超经典Oracle视频教程 博森瑞...
  12. java jdk生成安卓app证书
  13. 电脑关闭软键盘的快捷键。
  14. python量化交易书籍推荐_量化交易的几本书籍介绍
  15. 怎么快速无损的将FLV格式转换MP4格式
  16. 鼠标滑入滑出判断事件(转自流云诸葛)
  17. 位置信息、定位技术与位置服务
  18. 天赐转债,强联转债,再22转债上市价格预测
  19. 《花雕学AI》19:比较ChatGPT与新Bing在文章润色方面的应用优势与测试案例
  20. xs128 D-Flash读写

热门文章

  1. 华为MDC调试工具使用介绍
  2. TensorFlow:tensorflow之CIFAR10与ResNet18实战
  3. 利用python进行数据分析——第13章 python建模库介绍
  4. H - Cow Contest(floyd的传递闭包性)
  5. 【五级流水线CPU】—— 4. 移动操作指令(6条)
  6. 插值问题(拉格朗日插值、牛顿插值)
  7. 【已解决】抱歉,由于某种原因,PowerPoint 无法加载D:\mathtype\Office Support\64\MathType(PowerPoint 2016).ppam加载项。
  8. windows平台下压缩tar.gz
  9. c/c++入门教程 - 2.4.6 继承、公共继承、保护继承、私有继承、virtual虚继承(概念、语法、方式、构造和析构顺序、同名成员处理、继承同名静态成员处理、多继承语法、菱形继承、钻石继承)
  10. 随记 elasticsearch