DearPyGui学习

接上一篇环境配置

1.所有DPG应用程序必须做3件事:

创建和销毁上下文 (create_context)

创建和显示视区 (create_viewport、show_viewport)

设置和启动DearPyGui (start_dearpygui)

复制代码
#基本顺序
dpg.create_context()
dpg.create_viewport()
dpg.setup_dearpygui()

dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

2.DPG可以分解为 Items, UI Items, Containers三大类

Items:

项目是库中的任何东西(即按钮、注册表、窗口等)。

UI Items:

DPG中具有可视组件(即按钮、列表框、窗口等)的任何项。

Containers:

可以容纳其他物品的物品。(即窗口、组、注册表等)。

3.Item Usage

Items 使用 add_*** 语法添加.

所有Items都必须有一个可由DPG指定或自动生成的tag

tag可以是整数或字符串,用于在创建项后引用该Items。Items在创建时会返回其标签

复制代码
b0 = dpg.add_button(label="button 0")
b1 = dpg.add_button(tag=100, label="Button 1")

# 自动分配的tag
print(b0) 
# 100
print(b1) 

所有Items都有以下可选参数: label, tag, user_data, and use_internal_label.

tag 是自动生成的,也可以指定

label 用作项的显示名称。

user_data 可以是任何值,并且经常用于回调 。

4.Configuration, State, Info

DPG Items包括 configuration , state and info .

其中的每一个都可以通过其相应的函数进行访问

get_item_configuration

控制其外观和行为的关键字(标签、回调、宽度、高度)

get_item_state

反映其交互的关键字(可见、悬停、点击等)

get_item_info

反映其信息的关键字(item type, children, theme等)

5.Callbacks 与 Values

通过在激活项时指定要运行的函数来赋予项功能,并且DPG中的几乎所有UI项都可以运行回调。

Callbacks最多可以有3个参数,顺序如下:

sender(发送人,一般是自己)、app_data(它们自己的数据,如文件对话框)、user_data(要发送给该函数的任何Python对象)

复制代码
def button_callback(sender, app_data, user_data):
    print(f"sender is: {sender}")
    print(f"app_data is: {app_data}")
    print(f"user_data is: {user_data}")

with dpg.window(label="Tutorial"):
    # user data and callback set when button is created
    dpg.add_button(label="Apply", callback=button_callback, user_data="Some Data")

    # user data and callback set any time after button has been created
    btn = dpg.add_button(label="Apply 2", )
    dpg.set_item_callback(btn, button_callback)
    dpg.set_item_user_data(btn, "Some Extra User Data")

Item Values

几乎所有的UI项都有一个Values,它可以被访问或设置。

所有具有Values也有default_value参数,它将设置项的初始起始值。

可以使用以下命令访问值 get_value。

6.Item Handlers

Handlers是在项的指定状态更改 时提交回调的项。

Handlers可以通过显示或隐藏来激活或停用。

需要将Handlers添加到处理程序注册表 (handler registry.)。

处理程序注册表可以绑定到Item。它们可以绑定到多个Item,以避免必须为每个项复制处理程序。

Handlers侦听与特定项相关的状态。

状态(event变更)如下:Activated、Active、Clicked、Deactivated(停用)、Deactivated After Edited、Focus、Hover、Resize、Toggled、Visible

实列代码如下

复制代码
def change_text(sender, app_data):
    dpg.set_value("text item", f"Mouse Button ID: {app_data}")

def visible_call(sender, app_data):
    print("I'm visible")

# define handler_registry
with dpg.item_handler_registry(tag="widget handler") as handler:
    dpg.add_item_clicked_handler(callback=change_text) # listen for states
    dpg.add_item_visible_handler(callback=visible_call)

with dpg.window(width=500, height=300):
    dpg.add_text("Click me with any mouse button", tag="text item")
    dpg.add_text("Close window with arrow to change visible state printing to console", tag="text item 2")

# bind item handler registry to item
dpg.bind_item_handler_registry("text item", "widget handler")
dpg.bind_item_handler_registry("text item 2", "widget handler")

7.Developer Tools

DPG包括几个内置的可帮助开发和调试应用程序的工具

复制代码
import dearpygui.dearpygui as dpg

dpg.create_context()

dpg.show_documentation()
dpg.show_style_editor() # 样式编辑器
dpg.show_debug()
dpg.show_about()
dpg.show_metrics() # 实时显示应用程序的性能,与内置的样式编辑器一起显示
dpg.show_font_manager()
dpg.show_item_registry() # 项注册表

dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

在官方提供的DEMO程序中,包含上述提到的工具(进入DEMO程序的代码在环境配置一节中有提到)

相关推荐
费弗里38 分钟前
Python全栈应用开发利器Dash 3.x新版本介绍(1)
python·dash
李少兄9 天前
解决OSS存储桶未创建导致的XML错误
xml·开发语言·python
就叫飞六吧9 天前
基于keepalived、vip实现高可用nginx (centos)
python·nginx·centos
Vertira9 天前
PyTorch中的permute, transpose, view, reshape和flatten函数详解(已解决)
人工智能·pytorch·python
学Linux的语莫9 天前
python基础语法
开发语言·python
匿名的魔术师9 天前
实验问题记录:PyTorch Tensor 也会出现 a = b 赋值后,修改 a 会影响 b 的情况
人工智能·pytorch·python
Ven%9 天前
PyTorch 张量(Tensors)全面指南:从基础到实战
人工智能·pytorch·python
mahuifa9 天前
PySide环境配置及工具使用
python·qt·环境配置·开发经验·pyside
大熊猫侯佩9 天前
ruby、Python 以及 Swift 语言关于 “Finally” 实现的趣谈
python·ruby·swift
19899 天前
【Dify精讲】第19章:开源贡献指南
运维·人工智能·python·架构·flask·开源·devops