首页 > 其他分享 >DearPyGui学习

DearPyGui学习

时间:2024-11-08 09:46:35浏览次数:1  
标签:dpg show button 学习 item handler DearPyGui data

接上一篇环境配置

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

标签:dpg,show,button,学习,item,handler,DearPyGui,data
From: https://www.cnblogs.com/xxghw/p/18530658

相关文章

  • 基于springboot+vue.js+uniapp小程序的计算机学习系统附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SpringBoot前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • 数据结构学习笔记---线性表:顺序表(插入)
    顺序表的基本操作——插入首先,静态分配一个顺序表#include<stdio.h>#include<stdlib.h>#defineMaxSize5//定义队列的最大长度typedefstruct{ intdata[MaxSize]; intlength;}SqList;然后实现插入方法,for循环我们提前插入了四个元素,顺序排放原理是以i为......
  • 网络安全入门学习路线 怎样科学的进行网络安全学习
    01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也......
  • 怎样学习一个新的架构技术
    在工作中往往会遇到一些新的技术框架,以前不了解,或者知道名字但是不知道如何使用和内部原理感觉可以从以下几个步骤去学习理清整体架构可以从该技术框架经典书籍学习,整理出整体架构图(首选)官方文档(一般都是英文的,对英语阅读要求比较高)技术博客文章(优劣文章难以分辨,不是很推荐......
  • 11.08学习
    importrequestsr2=requests.request('put','http://httpbin.org/put',data='wangluo210102')d3={'banji':'wangluo210102'}#print(r2.text)r3=requests.post('http://httpbin.org/post',data=d3)#print(r3......
  • 2024-2025-1 20242407《网络》第二周学习总结
    2024-2025-120242407《网络》第二周学习总结教材学习内容总结教材学习中的问题和解决过程问题一:对于维吉尼亚密码的加密方式不是很理解解决方法:通过询问AI基于AI的学习......
  • 采用 Python 机器学习预测足球比赛结果
    足球是世界上最火爆的运动之一,世界杯期间也往往是球迷们最亢奋的时刻。比赛狂欢季除了炸出了熬夜看球的铁杆粉丝,也让足球竞猜也成了大家茶余饭后最热衷的话题。甚至连原来不怎么看足球的人,也是暗中努力恶补了很多足球相关知识,想通过赛事竞猜先赚一个小目标。今天我们将介绍......
  • Maxwell学习笔记——学生版体验
    Ansys提供了免费的学生版,在Ansys官网就可以下载,这里附上快捷链接:Ansys学生版|免费学生软件下载我也尝试下载了一下Ansysstudent和AnsysElectrionicsDesktopStudent,都是2024R2版本,这里分享一下体验。Ansysstudent在安装过程中没有模块选择界面,......
  • sql注入学习记录
    Sql注入思路1、搜索目标通过谷歌语法(如公司inurl:.asp?id=)查找目标网站通过fofaviewer进行查询目标 2、查找注入点存在位置,参数与数据库交互的地方,可能出现在get参数,post参数,user-agent,cookie等地方 3、测试是否存在注入点通过在参数后添加符号’,”,),)),查看页面是否......
  • STM32学习之SPI的简介与使用
    SPI(SerialPeripheralInterface)是一种常用的同步串行通信协议,它被广泛应用于多种电子设备和组件之间的通信。以下是一些SPI常用于连接的设备类型:存储设备:NORFlash:用于存储固件或数据的非易失性存储器。NANDFlash:用于大容量数据存储的非易失性存储器。传感器:加速度......