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程序的代码在环境配置一节中有提到)

DearPyGui学习的更多相关文章

  1. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  7. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  8. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  9. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  10. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

随机推荐

  1. SMU Spring 2023 Contest Round 1(MINEYE杯第十六届华中科技大学程序设计邀请赛)

    B. Contest Preparation 对n<=m和n==0时特判一下 #include <iostream> #include <cstdio> #include ...

  2. springboot如何集成Prometheus如何暴露Histogram来获取P99等监控指标

    背景 springboot如何集成Prometheus我这里不做详细描述,要想了解集成过程,可以参考一下博客: Spring Boot 使用 Micrometer 集成 Prometheus 监控 J ...

  3. 玩转内核链表list_head,3个超级哇塞的的例子

    在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head.虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作li ...

  4. 倾斜摄影osgb格式文件,进行坐标转换

    倾斜摄影OSGB格式的文件,很棘手,今天需要把osgb放到UE中渲染.碰到的问题如下: 1.osgb文件导进去后,Z轴不想上,是歪的,小人放进去后,就斜站在马路上. 2.根本原因是坐标系,UE的插件c ...

  5. SQL 求中位值

    题目A median is defined as a number separating the higher half of a data set from the lower half. Quer ...

  6. ES7学习笔记(二)ES的集群原理

    发现 发现是节点之间彼此发现,形成集群的一个过程.这个过程发生的场景有很多,比如:你启动了一个集群节点,或者一个节点确认主节点已经挂掉了,或者一个新的主节点被选举了. 咱们在配置集群的时候在配置文件中 ...

  7. [JS设计模式]:策略模式及应用-计算奖金、表单验证的实现(5)

    介绍 策略模式的意义是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.此模式让算法的变化不会影响到使用算法的客户. 实现 举一个例子,比如我们做数据合法性校验,一般是通过swich来实现 ...

  8. 报名开启|和你约定在 "Google 应用出海指南针"

    Google 谷歌发布的<2021 移动应用全球化指南>报告中提到,在移动互联网高度渗透的当下,全球用户迸发出来的广泛需求为中国新生代创业者带来了巨大的历史机遇.过去十年,依托于技术和人才 ...

  9. Vue 文件流预览 PDF

    Vue js // pdf 预览 export function download(id) { return request({ url: '/bbs/regtech/law/download?id= ...

  10. STL标准模板库

    STL(Standard Template Library)标准模板库 是C++标准库中的一个重要组成部分,它提供了一组通用的模板类和函数,用于数据结构和算法的实现.STL的核心部分包括容器.算法和迭 ...