DearPyGui学习

news/2024/11/8 9:58:11/文章来源:https://www.cnblogs.com/xxghw/p/18530658

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 createddpg.add_button(label="Apply", callback=button_callback, user_data="Some Data")# user data and callback set any time after button has been createdbtn = 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 statesdpg.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 dpgdpg.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程序的代码在环境配置一节中有提到)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828707.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器是Ubuntu20.04,安装Colmap

就下这一个东西,遇到的错误简直数不清,在这吐槽一下!顺便,分享一个最终成功的教程!!(虽然可能是玄学~) 附上我跟着一步一步来最终下好的教程链接,亲测好用!!! https://blog.csdn.net/weixin_44172157/article/details/122203759 其实中途还是发现了一个错误!和之前…

Html5QRCode扫描条形码+二维码

代码:<html> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>…

(三)死锁检测和解除

(三)死锁检测和解除 ‍ ​​ ‍(1)死锁的检测 ​​ 理解:在这个图中,以 P2 和 R1 间的箭头为例,表明实际上 P2 请求了两个 R1 资源,但 R1 只给他分配了1个资源。 ‍ 重点:最后能将边全部消除,则没有死锁发生。否则,仍然有边连着且消除不掉的进程则发生了死锁。(可完…

Microsoft Office 2019 (office全家桶)for Mac/Windows电脑安装包

Microsoft Office 2019 for Mac(Office全家桶)是一款功能全面且强大的办公软件套件,专为Mac用户设计。Mac苹果电脑下载:Office 2019 (含激活秘钥) Windows电脑下载:Office 2019(含批量许可) 以下是其主要特点和优势:一、界面设计采用了Mac系统的设计风格,界面简洁大方…

大模型-大模型-架构设计-6种设计模式-09

目录1. 路由分发架构模式2. 代理架构模式3. 基于缓存的微调架构模式4.面向目标的 Agent 架构模式5. Agent 智能体组合架构模式6. 双重安全架构设计模式 架构设计模式已成为程序员的重要技能。然而,当我们转向大模型应用领域,情况可能会有所不同。面对新兴技术,比如:生成式 …

死锁的处理策略

死锁的处理策略 ​​

信号量机制

信号量机制 1965年由荷兰学者 Dijkstra 提出 ​​ ‍一、概念 用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥、进程同步。 信号量甚实就是一个变量(可以是一个整数,也可以是更复杂的(数据结构)记录型变量),可以用一个信号量…

RAC:无训练持续扩展,基于检索的目标检测器 | ECCV24

来源:晓飞的算法工程笔记 公众号,转载请注明出处论文: Online Learning via Memory: Retrieval-Augmented Detector Adaptation论文地址:https://arxiv.org/abs/2409.10716创新点提出一种通过检索增强分类过程的创新在线学习框架RAC,与传统的基于离线训练/微调的方法相比,…

信号量实现进程互斥、同步、前驱关系

信号量实现进程互斥、同步、前驱关系 ‍ ​​ ‍​​​ P、V 操作必须成对出现。缺少 P(mutex) 就不能保证临界资源的互斥访问。缺少 V(mutex) 会导致资源永不被释放,等待进程永不被唤醒。 ‍ 一、实现进程互斥 注:下图中的第一行对信号量的初始化只是简化写法,并不严格遵循…

Git推送报错Authentication failed

在某一次的Git推送中出现了一个奇怪的报错Authentication failed,经过一番测试有可能是VSCode的Git插件所导致的问题,本文提供了一个在VSCode的Terminal中可以正常push的解决方案。问题背景 在某一次的Git推送时,配置好commit信息之后,执行push操作的时候出现了这样的一个报…

iOS微信授权登录中Universal Link(通用链接)的配置

配置Unuversal Links 1.苹果开发者账号打开配置2.配置JSON文件,创建一个空白文件(必须纯文本,命名为apple-app-site-association,去除后缀名)。这里建议让后台人员在其本地创建,避免文件传输时,文件自动被更改格式、后缀自动添加等问题{"applinks": {"ap…

充电桩着火预警系统

充电桩着火预警系统利用现场监控摄像头,充电桩着火预警系统对新能源汽车充电场景进行7*24小时实时监测,自动发现监控区域范围内的异常烟雾和火灾事故苗头,大大减少了人为因素导致的误报和漏报现象。同时,系统还会自动记录报警信息和处理过程,为后续的故障排查和责任追溯提…