Уважаемый PyGui

Создавайте быстрые и мощные графические интерфейсы с помощью «Dear PyGui» в Python

Графический пользовательский интерфейс без раздувания для Python с минимальными зависимостями. DearPyGui - это полностью интегрированная среда графического интерфейса пользователя, DearPyGui так же просто, как создание скрипта на Python.

Уважаемый PyGui - это простой и мощный фреймворк графического интерфейса пользователя Python для создания графического интерфейса пользователя с использованием скриптов Python. Dear Py Gui использует оболочки Dear ImGui, которые имитируют традиционный графический интерфейс с сохраненным режимом, в отличие от парадигмы непосредственного режима Dear ImGui.

Уважаемый, PyGui принципиально отличается от других графических интерфейсов Python.

Парадигма немедленного режима позволяет создавать чрезвычайно динамичные интерфейсы. Уважаемый PyGui не использует собственные виджеты, а вместо этого рисует графическую карту компьютера, например PyQt (с использованием API рендеринга Directx11, Metal и Vulkan).

Зачем использовать Уважаемый PyGui

По сравнению с другими библиотеками графического интерфейса Python Dear PyGui уникален тем, что:

  • Рендеринг на GPU
  • Простая встроенная поддержка асинхронных функций
  • Полный контроль над темой и стилем
  • Простое встроенное окно регистрации
  • 70+ виджетов с сотнями комбинаций виджетов
  • Подробная документация, примеры и беспрецедентная поддержка

Особенности

  • Темы - 10 встроенных тем и настраиваемая система тем
  • Graphing - графический API (упаковка ImPlot)
  • Canvas - низкоуровневый API рисования
  • Ведение журнала - API ведения журнала
  • Виджеты - прокрутите вниз до различных виджетов, найденных в Dear PyGui.

Установка

Убедитесь, что у вас установлен как минимум Python 3.7 (64-разрядная версия).

pip install dearpygui
or
pip3 install dearpygui

Зависимости

использование

Уважаемый PyGui предоставляет разработчикам Python простой способ создания быстрых и мощных графических интерфейсов для скриптов. Уважаемый PyGui состоит из окна программы, окон и виджетов. Окно программы - это главное окно вашей программы, которое создается в конце основного скрипта Python путем вызова функции start_dearpygui().

Код:

from dearpygui.core import *


def save_callback(sender, data):
    print("Save Clicked")


add_text("Hello, world")
add_button("Save", callback=save_callback)
add_input_text("string", default_value="Quick brown fox")
add_slider_float("float", default_value=0.273, max_value=1)

start_dearpygui()

Результат:

В приведенном ниже примере программы показано окно программы и другое окно, показывающее документацию с использованием встроенной функции документации.

from dearpygui.core import *

set_main_window_size(800, 800)
show_about()
show_documentation()

# when running this code please look at the about window and it will report which version of Dear PyGUI is running
# Even if you just did a pip install please ensure you your environment is using the latest package
start_dearpygui()

Уважаемый PyGui состоит из двух модулей dearpygui.core и dearpygui.simple.

dearpygui.core содержит базовую функциональность Dear PyGUI. С ядром все можно сделать. Это фактический модуль расширения C, который оборачивается модулем simple.

dearpygui.simple содержит простые оболочки и другие утилиты, созданные из ядра, чтобы обеспечить более приятный интерфейс для уважаемого PyGui.

Инструменты разработчика

Уважаемый PyGui, содержит несколько очень полезных инструментов для разработчиков. show_source() требует ввода имени файла python для чтения.

from dearpygui.core import *

show_documentation()
show_debug()
show_about()
show_metrics()
show_source("main.py")  # replace "main.py" with your python file name
show_logger()

start_dearpygui()

Встроенное ведение журнала

Один из многих мощных встроенных инструментов разработчика - Logger. Доступ к нему можно получить с помощью команды show_logger(). Регистратор имеет 6 уровней журнала:

  1. След
  2. Отлаживать
  3. Информация
  4. Предупреждение
  5. Ошибка
  6. Выключенный

Команды журнала можно фильтровать, задав уровень журнала. Регистратор отфильтрует установленный уровень и любые уровни ниже этого уровня.

Уровень журнала mvTRACE покажет все команды.

from dearpygui.core import *

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

start_dearpygui()

Создание виджетов и контейнеров

Уважаемые элементы PyGui можно разбить на:

  • обычные элементы (например, входы, кнопки)
  • элементы контейнера (например, окно, всплывающее окно, всплывающая подсказка, дочерний элемент)
  • элементы макета (т. е. группа, следующий_столбец)

Элементы добавляются соответствующими командами add _ ***.

У каждого предмета должно быть уникальное имя. По умолчанию имя станет меткой (если применимо). Если вы хотите изменить метку виджета, вы можете

  • Поместите «##» в конце имени (например, «отображаемое_имя ## уникальная_часть») все, что после «##» будет скрыто от отображаемого имени.
  • Используйте ключевое слово label, которое будет отображать метку вместо имени элемента.

Некоторые имена элементов создаются автоматически для элементов без аргументов имени в функции. (то есть same_line). Однако у них есть необязательное ключевое слово name, которое можно заполнить, если вам понадобится ссылаться на элемент позже.

from dearpygui.core import *

add_button("Apply")
add_same_line(spacing=10)
add_button("Apply##1")
add_same_line(spacing=10, name="sameline1")
add_button("Apply2", label="Apply")
add_spacing(count=5, name="spacing1")
add_button("Apply##3")

start_dearpygui()

dearpygui.simple менеджеры контекста автоматизируют вызов функции end, позволяют сворачивать код и отображают иерархию в самом коде.

По умолчанию элементы создаются в порядке их отправки.

Однако элементы могут быть добавлены не по порядку, указав контейнер parent. Использование ключевого слова parent вставит виджет в конец списка дочерних элементов родителя. Если вы хотите вставить его в другое место, используйте before в сочетании с ключевым словом parent, чтобы поместить элемент перед другим элементом в дочернем списке.

from dearpygui.core import *
from dearpygui.simple import *

add_text("First coded widget") 
add_text("This is some text on window 2", parent="window 2")  
# we can even specify the parent before it was coded
add_text("This is some text on child 1", parent="child 1")    
# we can even specify the parent before it was coded
with window("window 1"):                                      
# simple
    with child("child 1"):                                    
# simple
        add_checkbox("Checkbox")                              
# this is a input item added inside of the child
add_checkbox("Last coded widget", parent="MainWindow", before="First coded widget")
add_checkbox("Last coded widget 2", parent="child 1", before="Checkbox")

# empty window
with window("window 3"): # simple
    pass

start_dearpygui()

Использование виджетов

Каждый виджет ввода имеет значение, которое можно установить с помощью ключевого слова default_value при создании или во время выполнения командой set_value. Чтобы получить доступ к значению виджета, мы можем использовать команду get_value. Мы также можем передавать значение виджета напрямую в переменную python и из нее.

from dearpygui.core import *

my_var = True
add_checkbox("Radio Button", default_value=my_var)
print("Radio Button Value: ", get_value("Radio Button"))
print("my_var Value: ", my_var)

set_value("Radio Button", False)
print("Radio Button Value: ", get_value("Radio Button"))
print("my_var Value: ", my_var)

my_var = get_value("Radio Button")
print("Radio Button Value: ", get_value("Radio Button"))
print("my_var Value: ", my_var)

start_dearpygui()

Обратные вызовы виджетов и окон

У каждого виджета ввода есть обратный вызов, который запускается при взаимодействии с виджетом.

Обратные вызовы используются для обеспечения функциональности виджетов. Обратные вызовы могут быть назначены виджету при создании или после создания с использованием set_item_callback(), как показано в приведенном ниже коде.

Каждый обратный вызов, применяемый к элементу в Dear PyGui, должен принимать аргументы sender и data.

Аргумент отправитель используется Dear PyGui, чтобы сообщить функции обратного вызова, какой виджет инициировал обратный вызов, отправив имя.

Аргумент data используется различными стандартными обратными вызовами для отправки дополнительных данных путем указания обратного вызова callback_data.

У виджетов оконного типа есть специальные обратные вызовы, которые запускаются при таких событиях, как изменение размера окна и закрытие окна. Обратные вызовы, специфичные для окна, могут применяться к любому виджету оконного типа. on_close будет запускать обратный вызов, назначенный ключевому слову при закрытии окна, и set_resize_callback() будет запускаться при каждом изменении размера контейнера и может быть установлен для любого конкретного окна с помощью ключевого слова обработчика, по умолчанию - MainWindow.

Если вы хотите, чтобы обратный вызов запускался в каждом кадре, вы можете использовать set_render_callback()

from dearpygui.core import *
from dearpygui.simple import *


def close_me(sender, data):
    log_debug(f"{sender} window has been closed")


def render_me(sender, data):
    log_debug(f"window {sender} has ran a render callback")


def resize_me(sender, data):
    log_debug(f"window {sender} has ran a rezise callback")


show_logger()                                      # were going to use the logger to display callback replies
with window("Tester", on_close=close_me):          # simple
    add_text('resize this window resize callback will occur')
    add_text('close this window using the "x" button and a close callback will occur')

set_render_callback(render_me)
set_resize_callback(resize_me, handler="Tester")

start_dearpygui()

Добавление и удаление виджетов во время выполнения

Уважаемый PyGui, вы можете динамически добавлять и удалять любые элементы во время выполнения. Это можно сделать, используя обратный вызов для выполнения команды add _ *** нужного элемента и указав родителя, которому этот элемент будет принадлежать. По умолчанию виджет будет добавлен в MainWindow, если не указан родительский элемент.
Используя ключевое слово before при добавлении элемента, вы можете контролировать, какой элемент в родительском элементе будет приходи раньше. По умолчанию новый виджет помещается в конец.

Ценность и хранение данных

Когда добавляется новый виджет, значение добавляется в систему хранения значений. Идентификатором этого значения по умолчанию является имя виджета. Вы можете переопределить идентификатор, используя ключевое слово source. Одним из преимуществ этого является то, что несколько виджетов управляют одним и тем же значением.

Значения извлекаются из системы ценностей с помощью get_value("source name").

Значения можно изменить вручную с помощью set_value("source name").

Чтобы виджеты с разными типами значений использовали одно и то же значение в системе хранения, сначала необходимо создать большее значение.



Помните, что в хранилище данных можно хранить любой объект Python, даже пользовательские типы данных. Хотя мы будем показывать только сохраняемую карту.

from dearpygui.core import *


def store_data(sender, data):
    custom_data = {
        "Radio Button": get_value("Radio Button"),
        "Checkbox": get_value("Checkbox"),
        "Text Input": dget_value("Text Input"),
    }
    add_data("stored_data", custom_data)


def print_data(sender, data):
    log_debug(get_data("stored_data"))


show_logger()
show_debug()
add_radio_button("Radio Button", items=["item1", "item2"])
add_checkbox("Checkbox")
add_input_text("Text Input")
add_button("Store Data", callback=store_data)
add_button("Print Data", callback=print_data)


start_dearpygui()

Строка меню

Очень важным виджетом для функциональности графического интерфейса является строка меню. Строки меню всегда отображаются в верхней части окна и состоят из 3 основных частей:

  1. Строка меню - лента главного меню
  2. Меню - раскрывающиеся меню «подменю»
  3. Пункты меню - пункты, которые могут запускать обратные вызовы (в основном выбираемые)

Элементы добавляются в строку меню справа налево. Пункты добавляются в меню сверху вниз.

Меню можно вкладывать столько, сколько необходимо. В меню можно добавить любой виджет.

from dearpygui.core import *
from dearpygui.simple import *


def print_me(sender, data):
    log_debug(f"Menu Item: {sender}")


show_logger()
with menu_bar("Main Menu Bar"):                    # simple

    with menu("File"):                             # simple
    
        add_menu_item("Save", callback=print_me)
        add_menu_item("Save As", callback=print_me)
        
        with menu("Settings"):                     # simple
        
            add_menu_item("Setting 1", callback=print_me)
            add_menu_item("Setting 2", callback=print_me)
            
    add_menu_item("Help", callback=print_me)
    
    with 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)

start_dearpygui()

Диалоги выбора файлов и каталогов

Диалоги каталогов используются вызовом select_directory_dialog(), которому должен быть дан обратный вызов. Аргумент данных обратного вызова будет заполнен путем указания пути к каталогу и пути к папке в виде списка строк.

Файловые диалоги используются путем вызова open_file_dialog(), которому должен быть дан обратный вызов. Аргумент данных обратного вызова будет заполнен путем указания пути к каталогу и пути к файлу в виде списка строк. Расширения - это необязательное ключевое слово для диалогового окна файла, которое дает возможность выбора для фильтрации отображаемых файлов в диалоговом окне на основе их расширений.

from dearpygui.core import *


def file_picker(sender, data):
    open_file_dialog(callback=apply_selected_file, extensions=".*,.py")


def apply_selected_file(sender, data):
    log_debug(data)  # so we can see what is inside of data
    directory = data[0]
    file = data[1]
    set_value("directory", directory)
    set_value("file", file)
    set_value("file_path", f"{directory}\\{file}")


show_logger()
add_button("Directory Selector", callback=file_picker)
add_text("Directory Path: ")
add_same_line()
add_label_text("##filedir", source="directory", color=[255, 0, 0])
add_text("File: ")
add_same_line()
add_label_text("##file", source="file", color=[255, 0, 0])
add_text("File Path: ")
add_same_line()
add_label_text("##filepath", source="file_path", color=[255, 0, 0])

start_dearpygui()

Сюжет

Уважаемый PyGui, есть простые графики и графики, оба из которых могут быть динамичными.

Простые графики берут список и отображают данные по оси Y в зависимости от количества элементов в списке. Это могут быть линейные графики или гистограммы.

Сюжеты имеют гораздо больше функциональных возможностей, чем простые сюжеты. Графики используют координаты x и y. Графики должны быть созданы с помощью команды add_plot(), а затем данные могут быть добавлены либо как линейная серия, либо как точечная серия. Особенности участков:

  • Нажмите и перетащите: для панорамирования графика
  • Нажмите и перетащите ось: для панорамирования графика в одном направлении
  • Двойной щелчок: масштабирование графика по данным
  • Щелкните правой кнопкой мыши и перетащите: для увеличения области
  • Двойной щелчок правой кнопкой мыши: открывает настройки
  • Shift + щелчок правой кнопкой мыши и перетаскивание: для увеличения области, заполняющей текущую ось.
  • Колесо прокрутки мыши: увеличение
  • Прокрутка колесика мыши по оси: масштабирование только этой оси
  • Переключите наборы данных в легенде, чтобы скрыть их

Простые графики можно сделать динамическими, изменив значение вызова графика на set_value().

Сюжеты также могут быть динамическими. Динамическую функцию можно применить так же просто, как очистить график и добавить новые данные с помощью обратного вызова, например, для рендеринга или обратного вызова элемента. set_value().

from dearpygui.core import *
from math import cos


def plot_callback(sender, data):
    # keeping track of frames
    frame_count = get_data("frame_count")
    frame_count += 1
    add_data("frame_count", frame_count)

    # updating plot data
    plot_data = get_data("plot_data")
    if len(plot_data) > 2000:
        frame_count = 0
        plot_data.clear()
    plot_data.append([3.14 * frame_count / 180, cos(3 * 3.14 * frame_count / 180)])
    add_data("plot_data", plot_data)

    # plotting new data
    clear_plot("Plot")
    add_line_series("Plot", "Cos", plot_data, weight=2)


add_plot("Plot", height=-1)
add_data("plot_data", [])
add_data("frame_count", 0)
set_render_callback(plot_callback)

start_dearpygui()

Рисование / Холст

Уважаемый PyGui, имеет низкоуровневый API для рисования, который хорошо подходит для примитивного рисования, пользовательских виджетов или даже динамических рисунков.

Рисование начинается с вызова add_drawing(), затем элементы можно добавлять, вызывая соответствующие им команды рисования. Источник холста находится в левом нижнем углу.

У чертежей есть масштаб, исходная точка и размер, к которым можно получить доступ и установить. Масштаб - это множитель значений x и y элементов. Размер в пикселях.

Рисунки могут отображать изображения типов «.png», «.jpg» или «.bmp». Изображения нарисованы с использованием draw_image()

Хотя рисунки можно сделать динамическими путем очистки и перерисовки всего объекта, предлагается более эффективный метод.

Чтобы сделать рисунок динамическим, мы должны использовать ключевое слово tag, чтобы пометить элементы, которые мы хотим перерисовать. Затем просто вызовите команду рисования, используя тот же тег. Это приведет к удалению только этого одного элемента и его перерисовке с новой командой.

from dearpygui.core import *


def on_render(sender, data):
    counter = get_data("counter")
    counter += 1
    modifier = get_data("modifier")
    if counter < 300:
        modifier += 1
    elif counter < 600:
        modifier -= 1
    else:
        counter = 0
        modifier = 2

    xpos = 15 + modifier*1.25
    ypos = 15 + modifier*1.25
    color1 = 255 - modifier*.8
    color3 = 255 - modifier*.3
    color2 = 255 - modifier*.8
    radius = 15 + modifier/2
    segments = round(35-modifier/10)
    draw_circle("Drawing_1", [xpos, ypos], radius, [color1, color3, color2, 255], segments, tag="circle##dynamic")
    add_data("counter", counter)
    add_data("modifier", modifier)


add_data("counter", 0)
add_data("modifier", 2)
add_drawing("Drawing_1", width=700, height=700)
set_render_callback(on_render)

start_dearpygui()

Дельта-время и внутренние часы

Уважаемый PyGui, имеет встроенные часы для проверки общего времени выполнения get_total_time(), которое возвращает общее время выполнения в секундах.

Также с помощью команды get_delta_time() мы можем проверить время между кадрами рендеринга в секундах.

from dearpygui.core import *


def on_render(sender, data):
    delta_time = str(round(get_delta_time(), 4))
    total_time = str(round(get_total_time(), 4))
    set_value("delta_time", delta_time)
    set_value("total_time", total_time)


add_text("Total Time: ")
add_same_line()
add_label_text("##total_time_text", source="total_time")
add_text("Delta Time: ")
add_same_line()
add_label_text("##delta_time_text", source="delta_time")
set_render_callback(callback=on_render)

start_dearpygui()

Таблицы

Уважаемый PyGui, имеет простой API таблиц, который хорошо подходит для статических и динамических таблиц.

Виджет таблицы запускается вызовом add_table().

Для редактирования виджета таблицы мы можем использовать методы add_row() add_column(), которые добавят строку / столбец к последнему слоту в таблице.

В качестве альтернативы мы можем вставлять строки / столбцы, используя insert_row() insert_column(). Столбцы и строки вставляются в соответствии с их аргументом индекса. Если указанный индекс уже существует, существующие столбцы / строки будут вытеснены, а новая строка / столбец будет вставлена ​​по указанному индексу.

Кроме того, добавленная или вставленная строка / столбец по умолчанию заполняет неопределенные ячейки пустыми ячейками.

Кроме того, можно переименовывать заголовки и ячейки и изменять их значения.

Ячейки таблиц доступны для выбора. Это означает, что мы можем применить обратный вызов к таблице и получить, какая ячейка была выбрана через отправителя, и даже получить текст внутри ячейки.

from dearpygui.core import *


def table_printer(sender, data):
    log_debug(f"Table Called: {sender}")
    coord_list = get_table_selections("Table Example")
    log_debug(f"Selected Cells (coordinates): {coord_list}")
    names = []
    for coordinates in coord_list:
        names.append(get_table_item("Table Example", coordinates[0], coordinates[1]))
    log_debug(names)


show_logger()
add_table("Table Example", ["Header 0", "Header 1"], callback=table_printer)
add_row("Table Example", ["awesome row", "text"])
add_row("Table Example", ["super unique", "unique text"])
add_column("Table Example", "Header 3", ["text from column", "text from column"])
add_row("Table Example", ["boring row"])

start_dearpygui()

Входной опрос

Опрос ввода в Dear PyGui выполняется путем вызова нужной команды опроса внутри функции. Функция должна быть установлена ​​на обратный вызов рендеринга Windows, чтобы опрос происходил, когда это окно активно. Поскольку обратные вызовы рендеринга запускаются каждый кадр, уважаемый PyGui может опрашивать между кадрами, если выполняется указанный ввод.

Список всех опросов выглядит следующим образом:

  • get_mouse_drag_delta ()
  • get_mouse_pos ()
  • is_key_down ()
  • is_key_pressed ()
  • is_key_released ()
  • is_mouse_button_clicked ()
  • is_mouse_button_double_clicked ()
  • is_mouse_button_down ()
  • is_mouse_button_dragging ()
  • is_mouse_button_released ()
  • set_key_down_callback ()
  • set_key_press_callback ()
  • set_key_release_callback ()
  • set_mouse_click_callback ()
  • set_mouse_double_click_callback ()
  • set_mouse_down_callback ()
  • set_mouse_drag_callback ()
  • set_mouse_wheel_callback ()
  • set_render_callback ()
  • set_resize_callback ()

Для получения информации о конкретной команде см. Справочник по API.

Можно объединить столько опросов, сколько необходимо для достижения желаемой функциональности.

from dearpygui.core import *


def main_callback(sender, data):
    set_value("Mouse Position", str(get_mouse_pos()))

    if is_key_down(mvKey_A):
        set_value("A key Down", "True")
    else:
        set_value("A key Down", "False")

    if is_key_pressed(mvKey_A):
        set_value("A key Pressed", "True")
    else:
        set_value("A key Pressed", "False")

    if is_key_released(mvKey_A):
        set_value("A key Released", "True")
    else:
        set_value("A key Released", "False")

    if is_mouse_button_dragging(mvMouseButton_Left, 10):
        set_value("Left Mouse Dragging", "True")
    else:
        set_value("Left Mouse Dragging", "False")

    if is_mouse_button_clicked(mvMouseButton_Left):
        set_value("Left Mouse Clicked", "True")
    else:
        set_value("Left Mouse Clicked", "False")

    if is_mouse_button_double_clicked(mvMouseButton_Left):
        set_value("Left Mouse Double Clicked", "True")
    else:
        set_value("Left Mouse Double Clicked", "False")

    if is_key_down(mvKey_Shift) and is_mouse_button_clicked(mvMouseButton_Left):
        set_value("Shift + Left Mouse Clicked", "True")
    else:
        set_value("Shift + Left Mouse Clicked", "False")


add_label_text("A key Down", value="False", color=[0, 200, 255])
add_label_text("A key Pressed", value="False", color=[0, 200, 255])
add_label_text("A key Released", value="False", color=[0, 200, 255])
add_spacing()
add_label_text("Mouse Position", value="(0,0)", color=[0, 200, 255])
add_label_text("Left Mouse Clicked", value="False", color=[0, 200, 255])
add_label_text("Left Mouse Dragging", value="False", color=[0, 200, 255])
add_label_text("Left Mouse Double Clicked", value="False", color=[0, 200, 255])
add_label_text("Shift + Left Mouse Clicked", value="False", color=[0, 200, 255])

set_render_callback(main_callback)

start_dearpygui()

Многопоточность и асинхронные функции

Для вычислений и обратных вызовов, требующих длительного времени, может быть полезно реализовать асинхронные функции или функции, выполняемые в отдельных потоках. Для этого просто позвоните run_async_function().

Важно отметить, что функции, выполняемые с помощью команды async, не могут вызывать другие вызовы API Dear PyGui.

Асинхронные функции не могут получить доступ к add_data() или get_data(). Поэтому, когда необходимо передать данные в асинхронную функцию, вы должны использовать данные и возвращать аргументы обработчика в виде ключевого слова. Любой объект Python можно сделать доступным для функции async, отправив в функцию ключевое слово data. Кроме того, любые данные, возвращаемые функцией Async, будут доступны через ввод данных указанного обратного вызова возврата.

from dearpygui.core import *
from time import sleep


def long_async_preparer(data, sender):
    floaty = get_value("Async Input Data")
    run_async_function(long_callback, floaty, return_handler=long_async_return)


def long_callback(sender, data):
    sleep(3)
    return data * 2


def long_async_return(sender, data):
    log_debug(data)


def long_callback2(sender, data):
    sleep(3)
    log_debug(data * 2)

show_logger()
add_text(
    "input a number and see the logger window for the output of the long callback that would normally freeze the GUI")
add_input_float("Async Input Data", default_value=1.0)
add_button("long Function", callback=long_callback2, callback_data=get_value("Async Input Data"), tip="This is the long callback that will freeze the gui")
add_button("long Asynchronous Function", callback=long_async_preparer, tip="this will not a freeze the GUI")

start_dearpygui()

Когда вызывается метод асинхронной функции, создается пул потоков. Аспекты пула потоков, которые можно настроить, - это количество потоков и время ожидания.

используя set_thread_count(), мы можем установить количество потоков в пуле потоков. Кроме того, мы можем использовать set_threadpool_high_performance(), чтобы указать пулу потоков максимально увеличить количество потоков на компьютере пользователя. Имейте в виду, что при вызове асинхронных функций процессор будет загружен на 100%.

Установить время ожидания для пула потоков можно с помощью set_threadpool_timeout(). Это уничтожит пул потоков и освободит ресурсы по истечении установленного времени.

Темы и стили

Темы и стили виджета можно применить к отдельному виджету или к приложению в целом. Некоторые примеры атрибутов стиля, которые можно установить:

  • размер шрифта
  • цветовая схема приложения
  • угловая округлость

Уважаемые PyGui-Примеры

Это репо для примеров, демонстрирующих возможности библиотеки пользовательского интерфейса python Уважаемый PyGui

Https://github.com/Pcothren/DearPyGui-Examples.git

Чтобы установить необходимые зависимости, запустите pip install -r requirements.txt или pip3 install -r requirements.txt из клонированного репо на вашем компьютере.

Заключение

Уважаемый PyGui - это простой и мощный легкий в использовании фреймворк графического интерфейса пользователя Python для создания графического интерфейса пользователя с использованием скриптов Python. Дорогой PyGui рисует виджеты с помощью графического процессора компьютера и работает в Windows 10, macOS и Linux. Он включает в себя функции построения графиков, темы, API рисования для пользовательских чертежей и инструменты для разработки приложений.

DearPyGui обертывает Уважаемый ImGui, предоставляет моделируемый традиционный API с сохраненным режимом, включает дополнительные виджеты и надстройки (графики, файловые диалоги, изображения, виджет редактирования текста и т. Д.), Добавляет поддержку асинхронности, добавляет элементы на холст, дополнительные инструменты отладки , так далее.

Некоторые предстоящие возможности:

  • Объектно-ориентированный интерфейс
  • Типы Extra Spot (гистограмма, круговая диаграмма и многие другие).
  • Улучшение стыковки окон и 2 видовых экранов.
  • 3D-виджет.
  • Персонализированный API виджетов.

Дальнейшее чтение

  1. Уважаемый PyGui
  2. Уважаемый PyGui Github Repo
  3. УважаемыеPyGui-Примеры
  4. Уважаемая документация PyGui
  5. Дорогие учебники PyGui

В конечном итоге он пытается предоставить полный пакет.

Получите доступ к экспертному обзору - Подпишитесь на DDI Intel