DearPyGui 教程(二)


(注:由于DearPyGui正处于快速迭代期,功能日兴月易,本文所描述的内容很有可能已经过时,如需了解最新信息,请至源文链接:https://hoffstadt.github.io/DearPyGui/tutorial.html)

本教程旨在演示如何使用DearPyGui的一部分特性,并未覆盖DearPyGui的全部功能,更多复杂功能的示例可以在GitHub上的示例文件夹中看到. 有关特定API的信息建议参考 API Reference.

运行时添加和删除widget小部件

使用DearPyGui,您可以在运行时动态地添加和删除任何widget小部件。 这可以通过使用回调方法调用所需的小部件“add”命令并指定小部件所属的父部件来完成。 默认情况下,如果没有指定父窗口,小部件将被添加到"MainWindow"主窗口。

在本例中,我们使用"debug"开发人员工具查看小部件的当前状态。 转到调试小部件上的"App Item Layout"选项卡,此选项卡显示应用程序的状态和属性。 单击“mainwindow”树我们可以看到小部件当前显示在主窗口上。 尝试单击主窗口上的"Add/Delete"按钮,并查看树状态的更改。

from dearpygui.core import *

def addButtons(sender, data):
    add_button("New Button")
    add_button("New Button 2", parent="Secondary Window")

def deleteButtons(sender, data):
    delete_item("New Button")
    delete_item("New Button 2")


show_debug()
add_button("Add Buttons", callback=addButtons)
add_button("Delete Buttons", callback=deleteButtons)
add_window("Secondary Window")
end()

start_dearpygui()

当删除窗口或容器小部件时,默认情况下将删除其包括部件本身的所有小部件。 若只想删除窗口或容器小部件内的子部件(而不删除窗口或容器小部件本身),可设关键字“children_only”为True。

from dearpygui.core import *


def addWidgets(sender, data):
    add_window("Secondary Window")
    end()
    add_button("New Button")
    add_button("New Button 2", parent="Secondary Window")


def deleteWidgets(sender, data):
    delete_item("Secondary Window")
    delete_item("New Button")


show_debug()
add_button("Add Widgets", callback=addWidgets)
add_button("Delete Widgets", callback=deleteWidgets)

start_dearpygui()

内建的Logger日志

Logger是DearPyGui在开发人员工具中内建的强大工具之一,可以通过show_logger()命令访问。 Logger有6个日志级别:
1. Trace
2. Debug
3. Info
4. Warning
5. Error
6. Off
日志命令可以通过设置日志级别来过滤。 logger会筛选出等于和低于该级别的任何日志内容。
“0” 级别将显示所有日志。如下示例:

from dearpygui.core import *


show_logger()
set_log_level(0)
log("trace message")
log_debug("debug message")
log_info("info message")
log_warning("warning message")
log_error("error message")

start_dearpygui()

Widget的数据存储和跨Widget通信

如果想用一个widget小部件直接控制另一个widget小部件的值,或者2个小部件需要控制同一个值。 可以通过 add_data()get_data() 实现。
当使用数据源时,小部件的值和数据源的更改将相互绑定。 这对于链接到任何小部件以使用相同的数据是有用的。 例子如下所示。

from dearpygui.core import *


def print_me(sender, data):
    print(get_value("Radio Button1"))
    print(get_value("Radio Button2"))
    print(get_data("data1"))

add_checkbox("Radio Button1", source="data1")
add_checkbox("Radio Button2", source="data1")
add_data("data1", True)
add_button("button", callback=print_me)

start_dearpygui()

数据项的另一个用途是存储要访问的数据,即使在回调中也是如此,如下所示。

from dearpygui.core import *

def store_data(sender, data):
    add_data("storedData", get_value("Radio Button"))


def print_data(sender, data):
    print(get_data("storedData"))

add_checkbox("Radio Button")
add_button("Get Value and Store", callback=store_data)
add_button("Get Data and Print", callback=print_data)


start_dearpygui()

菜单栏

GUI功能的一个非常重要的小部件就是菜单栏。 菜单栏总是显示在窗口的顶部,有三个主要部分:
1. 菜单栏 - 主菜单栏
2. 菜单 - 下拉菜单“子菜单”
3. 菜单项 - 可以运行回调的项(基本上是可选的)
4. 任何小部件 - Plot,绘图等

菜单栏和菜单都是容器小部件,它们的容器必须用相应的“end”来结束。 菜单项以从右到左(应该是从左到右),从上到下的顺序添加到菜单栏中。
菜单可以无限级联。
任何widget小部件都可以加到菜单中。

from dearpygui.core import *

def print_me(sender, data):
    print("Menu Item: " + sender)

add_menu_bar("Main Menu Bar")
add_menu("File")
add_menu_item("Save", callback=print_me)
add_menu_item("Save As", callback=print_me)
add_menu("Settings")
add_menu_item("Setting 1", callback=print_me)
add_menu_item("Setting 2", callback=print_me)
end()
end()
add_menu_item("Help", callback=print_me)
add_menu("Widget Items")
add_checkbox("Pick Me", callback=print_me)
add_button("Press Me", callback=print_me)
add_color_picker4("Color Me", callback=print_me)
end()
end()

start_dearpygui()

效果如下:
菜单栏效果1
菜单栏效果2

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页