Как получить целочисленные значения списка, используя ввод другого списка строковых значений, помещенных в поля со списком?

Я относительно новичок в Dearpygui, и у меня возникли проблемы с попыткой использовать поля со списком для обратного вызова указанных значений int из списка, хранящегося в user_data, с использованием строковых значений другого списка в элементах комбо. Этот код не является моим настоящим кодом, но решает проблему.

import dearpygui.dearpygui as dpg

dpg.create_context()

listA = ["a", "b", "c"]
listB = [2, 5, 8]

def getvalues(sender, data):
    letter = dpg.get_value("char")
    print(f"Sender: {sender}")
    print(f"Letter: {letter}")
    print(f"Data: {data}")

with dpg.window():
    dpg.add_combo(label = "letters", tag = "char", items=listA)
    dpg.add_button(label = "Get", callback=getvalues, user_data=listB)

dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

Для буквы я получаю букву, выбранную в комбинации, но данные отображаются как «Нет», и я не могу понять, как мне это закодировать.

Я попытался использовать .index() для списков, чтобы получить индексы ListA и подписать его на ListB. Я также пробовал использовать dpg.set_value(), но это просто изменило данные письма. Пожалуйста, помогите мне!


67
1

Ответ:

Решено

Используйте .index(), но получите значение из комбинации следующим образом:

listA = ["a", "b", "c"]
listB = [2, 5, 8]

def getvalues():
    selectlistA = dpg.get_value("char")
    if selectlistA in listA:
        index = listA.index(selectlistA)
        selectlistB = listB[index]
        print(f"value: {selectlistB}")

with dpg.window():
    dpg.add_combo(label = "letters", tag = "char", items=listA)
    button = dpg.add_button(label = "Get", callback=getvalues)