10分钟搞定!用DearPyGui打造你的Python界面

news2024/11/15 19:47:12

大家好,在Python的众多第三方库中,DearPyGui是一个非常独特且强大的库。它不仅能帮助开发者快速构建图形用户界面(GUI),还简化了很多复杂的操作。

image-20240531000307385

什么是DearPyGui?

DearPyGui是一款基于ImGui的Python图形用户界面库。ImGui是一种即时模式图形用户界面库,它与传统的事件驱动式GUI库不同,能够更直观地描绘和管理用户界面元素。DearPyGui利用了ImGui的高性能和简洁API,使得开发者可以轻松创建现代化和交互性强的GUI应用。

DearPyGui的核心特点

  1. 即时模式GUI:与传统的GUI库不同,DearPyGui采用即时模式,所有的界面元素都在每一帧重新绘制。
  2. 高性能:得益于ImGui的底层实现,DearPyGui在性能上表现出色,能够处理大量的界面元素。
  3. 易于使用:API设计简洁,开发者可以快速上手。
  4. 可扩展性:支持插件和自定义组件,满足复杂的应用需求。

安装和基本使用

在开始编写代码之前,我们需要先安装DearPyGui。可以通过pip简单地进行安装:

pip install dearpygui

安装完成后,我们可以开始编写第一个简单的GUI程序。

import dearpygui.dearpygui as dpg

dpg.create_context()

with dpg.window(label="Hello, DearPyGui", width=400, height=200):
    dpg.add_text("Hello, world!")
    dpg.add_button(label="Click Me")
    dpg.add_input_text(label="Input")

dpg.create_viewport(title='DearPyGui Demo', width=600, height=400)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

上述代码创建了一个简单的窗口,包含一个文本、一个按钮和一个输入框。接下来,我们将逐步解析这个示例代码,并深入理解DearPyGui的使用。

image-20240531114721360

深入理解DearPyGui

创建上下文和窗口

dpg.create_context()

在使用DearPyGui之前,我们需要创建一个上下文,这相当于初始化DearPyGui的内部状态。

with dpg.window(label="Hello, DearPyGui", width=400, height=200):

窗口是DearPyGui的基本组件之一,通过with语句创建一个窗口,并在窗口内添加各种UI元素。这里设置了窗口的宽度和高度参数,确保窗口尺寸足够容纳所有UI元素。

添加UI元素

dpg.add_text("Hello, world!")
dpg.add_button(label="Click Me")
dpg.add_input_text(label="Input")

在窗口内,我们可以添加各种UI元素,例如文本、按钮和输入框。每个元素都有自己的属性,可以通过参数进行设置。

显示和运行GUI

dpg.create_viewport(title='DearPyGui Demo', width=600, height=400)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

创建视口并设置标题和尺寸。setup_dearpygui函数用于配置DearPyGui,show_viewport函数显示视口,start_dearpygui函数启动主循环,destroy_context函数销毁上下文,释放资源。

丰富案例:构建一个简单的计算器

为了更好地理解DearPyGui,我们将构建一个简单的计算器应用。

import dearpygui.dearpygui as dpg

dpg.create_context()

def calculate(sender, app_data, user_data):
    expression = dpg.get_value(user_data)
    try:
        result = eval(expression)
        dpg.set_value("result", str(result))
    except:
        dpg.set_value("result", "Error")

with dpg.window(label="Calculator", width=400, height=200):
    with dpg.group(horizontal=False):
        dpg.add_input_text(label="Expression", tag="expression")
        dpg.add_button(label="Calculate", callback=calculate, user_data="expression")
        dpg.add_text("", tag="result")

dpg.create_viewport(title='Simple Calculator', width=400, height=200)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

image-20240531114610227

解析代码

  • 创建输入框和按钮:我们创建了一个输入框用于输入表达式,一个按钮用于触发计算。
  • 计算函数calculate函数获取输入框的值,计算结果并显示在文本框中。
  • 标签(tag):我们使用标签(tag)来唯一标识UI元素,方便在回调函数中获取和设置它们的值。
  • 布局容器:使用dpg.group(horizontal=False)确保控件按垂直方向排列,不会重叠。

进阶使用:自定义主题和样式

DearPyGui还允许我们自定义主题和样式,使得界面更加美观和个性化。

import dearpygui.dearpygui as dpg

dpg.create_context()

with dpg.theme() as global_theme:
    with dpg.theme_component(dpg.mvAll):
        dpg.add_theme_color(dpg.mvThemeCol_WindowBg, (50, 50, 50, 255))
        dpg.add_theme_color(dpg.mvThemeCol_Button, (0, 153, 153, 255))
        dpg.add_theme_color(dpg.mvThemeCol_ButtonHovered, (0, 204, 204, 255))
        dpg.add_theme_color(dpg.mvThemeCol_ButtonActive, (0, 255, 255, 255))

with dpg.window(label="Styled Window", width=400, height=200):
    dpg.add_text("This window has a custom theme.")
    dpg.add_button(label="Styled Button")

dpg.bind_theme(global_theme)

dpg.create_viewport(title='Custom Theme', width=400, height=200)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

image-20240531114503119

在这个示例中,我们创建了一个全局主题,并设置了一些颜色属性。然后将主题绑定到窗口,使其生效。

DearPyGui是一款功能强大且易于使用的Python GUI库,通过即时模式和高效的API设计,使得创建现代化的GUI应用变得简单而高效。更多学习内容,大家可以参考:

Dear PyGui官方文档:https://github.com/hoffstadt/DearPyGui
Dear ImGui官方文档:https://github.com/ocornut/imgui

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端canvas绘图,利用canvas在图片上面绘制标记以及给canvas添加点击事件。

前端canvas绘图&#xff0c;利用canvas在图片上面绘制标记以及给canvas添加点击事件。 需要实现的效果如下图: 首先需要一个承载的核心画布 <canvas id"canvas" width"800" height"600"></canvas>全部代码&#xff1a; <!DOCT…

JVMの内存泄漏内存溢出案例分析

1、内存溢出 内存溢出指的是程序在申请内存时&#xff0c;没有足够的内存可供分配&#xff0c;导致无法满足程序的内存需求&#xff0c;常见的内存溢出情况包括堆内存溢出&#xff08;Heap Overflow&#xff09;和栈溢出&#xff08;Stack Overflow&#xff09;&#xff1a; …

短视频外卖平台区域代理怎么拿?两种方法!

抖音外卖平台区域代理怎么拿&#xff1f;市面上只有两种途径可走。没有其他任何方法。 一是拿抖音官方区域服务商身份&#xff0c;第一个要求是保证金50万&#xff0c;公司必须还要有20个人以上的社保证明。同时还要提供企业半年的银行资金流水。如果小型公司基本是不用考虑的…

R语言数据探索和分析21-中国GDP及其影响因素多元线性回归分析

一、研究背景和意义 GDP 是宏观经济中最受关注的经济统计数字&#xff0c;目前我国国内生产总值年均增长率均明显高于同期美、日等发达经济体和巴 西、俄罗斯、南非、印度等其他金砖国家&#xff0c;成为世界经济增长的主力军&#xff0c;GDP 的增长对一个国家有着十分重要的意…

30天变现5位数,涨粉2w,用AI做治愈系插图,5分钟一套,太香了(附工具教程)

前段时间和一位朋友聊天&#xff0c;他说现在靠 AI 赚到钱的&#xff0c;全是那些卖课的&#xff01;还说得很气愤。 我竟然一时不知道说什么好。 虽然我并不认同他的说法&#xff0c;但也没有再说什么了。 因为人们往往会根据自己已有的认知体系&#xff0c;去判断一件事。…

【Python字符串攻略】:玩转文字,编织程序的叙事艺术

文章目录 &#x1f680;一.字符串基础&#x1f308;二.查看数据类型⭐三.转化❤️四.字符串索引&#x1f6b2;五.字符串切片&#x1f3ac;六.字符串切片-步长☔七.反向切片注意事项&#x1f6b2;八.字符串&#x1f4a5;查&#x1f4a5;改&#x1f4a5;删 ❤️九.字符串拼接&…

引擎:UI

一、控件介绍 Button 按钮 创建一个按钮 按钮禁用 精灵模式 颜色模式 缩放模式 绑定点击事件 EditBox 输入框 Layout 布局 支持水平排列、垂直排列、背包排列 PageView 页面视图 ProgressBar 进度条 RichText 富文本 绑定点击事件 事件可以被其它标签包裹 图文混排 Scroll…

2年JAVA今日头条3轮面试经历

面头条的时候已经是十月底了。大半个月没有面试&#xff0c;之前准备的知识点比如http状态码之类的记忆性的东西&#xff0c;早就忘光了。 二面的时候问了一堆状态码&#xff0c;全都不记得了。面试官态度很好&#xff0c;跟我说&#xff0c;你现在不记得了&#xff0c;说明你…

[数据集][目标检测]医疗防护服检测数据集VOC+YOLO格式649张7类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;649 标注数量(xml文件个数)&#xff1a;649 标注数量(txt文件个数)&#xff1a;649 标注类别…

骨传导耳机有哪些是值得入手的?看完这篇推荐就懂了!

骨传导耳机在运动圈非常的受欢迎&#xff0c;因为佩戴运动的时候&#xff0c;骨传导耳机能够稳固佩戴&#xff0c;无论是跳跃或者是摇晃身体等&#xff0c;耳机都不会轻易掉落&#xff01;而很多朋友对于骨传导耳机总是想尝试却又害怕掉坑&#xff01;于是为了给大家提供更多的…

Gradio.NET:一个快速制作演示demo网页的利器

Gradio介绍 Gradio是一个用于创建机器学习模型交互界面的Python库。它允许开发者快速为他们的模型创建一个简单的web界面&#xff0c;以便于非技术用户和其他开发者进行交互和测试。 Gradio的主要优点是易用性和灵活性。你只需要几行代码就可以为你的模型创建一个交互界面。你…

前端实现输入内容计算密码强度

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、思路二、计算密码强度分数密码强度动画展示效果完善动画效果完整代码前言 平时我们在浏览各种网站和 APP 的时候,都接触过密码这个东西~ 密码设置的好不好,关乎到你的账号安全性,越复杂的密码越安全,所以密码强度…

【Python数据挖掘实战案例】机器学习LightGBM算法原理、特点、应用---基于鸢尾花iris数据集分类实战

一、引言 1、简要介绍数据挖掘的重要性和应用 在数字化时代&#xff0c;数据已经成为企业和社会决策的重要依据。数据挖掘作为一门交叉学科&#xff0c;结合了统计学、机器学习、数据库技术和可视化等多个领域的知识&#xff0c;旨在从海量数据中提取有价值的信息&#xff0c…

智能水位监测识别报警摄像机:保障水域安全的重要利器

随着城市化进程的加速和气候变化的影响&#xff0c;对水域安全的关注日益增加。为了及时监测水位变化并采取相应措施&#xff0c;智能水位监测识别报警摄像机应运而生。本文将介绍这一创新技术的应用和优势。 传统的水位监测方法通常依赖于传感器&#xff0c;但其存在着安装位置…

哪款开放式耳机佩戴最舒服?2024五款备受推崇产品分享!

​作为一位耳机领域的资深数码评测师&#xff0c;我极力推荐开放式耳机作为日常佩戴之选。这款耳机凭借其创新的非入耳设计&#xff0c;有效避免了传统入耳式耳机长时间佩戴导致的耳道不适和感染风险&#xff0c;同时提供了稳固舒适的佩戴体验&#xff0c;特别适合运动爱好者如…

关于安装typescript后运行tsc -v命令报错问题

报错信息&#xff1a; tsc 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 没有配置环境变量&#xff0c;使用npm命令查看typescript的安装目录&#xff1a; npm config get prefix 根据控制台输出的目录&#xff0c;配置path环境变量 tsc -v 运行成功&…

【WEB自动化面试02--学习过程的问题及解决】

day01 1、报错获取不到浏览器二进制文件&#xff1a;需要指定浏览器路径及驱动路径。 第一次使用谷歌浏览器驱动&#xff0c;找不到二进制文件报错&#xff1a; selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary Stacktra…

Rust基础学习-Rust中的文件操作

文件结构 在Rust中&#xff0c;std::fs::File 结构体代表一个文件。它允许我们对文件执行读/写操作。文件 I/O 是通过提供与文件系统交互的功能的 std::fs 模块执行的。 File 结构体中的所有方法都返回std::io::Result的变体&#xff0c;或者简单地是 Result 枚举。这里会涉及…

开发项目功能开发设计模板

功能开发设计是一个系统化的过程&#xff0c;旨在确保新功能的开发既满足用户需求又符合技术标准。以下是一个适用于大多数软件开发项目功能开发设计模板&#xff1a;

短信群发平台为什么要用网页版的短信平台呢

短信群发平台选择使用网页版短信平台的原因可以归纳为以下几点&#xff1a; 1.操作简便&#xff1a; 网页版短信群发平台通常具有直观易用的界面&#xff0c;用户无需下载或安装任何软件&#xff0c;只需通过浏览器即可访问。 使得用户可以随时随地轻松进行短信发送和管理&a…