Почему моя python функция печатает {} Main, а не только Main? - PullRequest
0 голосов
/ 19 января 2020

Я использую функцию, чтобы извлечь мои данные из файла json и распечатать его в поле со списком tkinter, по какой-то причине перед первым словом всегда стоит {}. Мои json данные не имеют их, так почему они появляются в моих выходных данных?

    with open('profiles.txt', 'r') as file:
        profiles = json.load(file)
        for profile in profiles:
            add_profile = profile['profile_name']
            profiles_select['values'] = (profiles_select['values'], add_profile)

Значения также по умолчанию не содержат ничего, поэтому код контейнера значений выглядит следующим образом: profiles_select = ttk.Combobox(new_task_frame1, width=10, values=[])

Вот примерные данные json:

[
    {
        "profile_name": "Main",
        "first_name": "Michael ",
    },
    {
        "profile_name": "Test",
        "first_name": "Michael ",
    }
]

Это то, что я ожидаю увидеть в моем поле со списком tkinter:

Main
Test

Это то, что на самом деле выходы

{}Main
Test

1 Ответ

1 голос
/ 19 января 2020

Вопрос : Почему моя python функция печатает '{}Main', а не просто 'Main'?

  • Инициализация profiles_select['values']
    profiles_select = ttk.Combobox(new_task_frame1, width=10, values=[])
    
    Этот результат, виджет внутренний, к: '', tcl использует: '{}'

  • Добавление параметров
    profiles_select['values'] = (profiles_select['values'], add_profile)
    
    Вы принимаете внутреннее значение '' и новая опция 'Main', которая приводит к ('', 'Main').

  • Как tkinter показывает Listbox опции

    Ваши две опции:

    {}Main  
    Test
    

    Более две опции:

    profiles_select['values'] = ('{{{} Main} Test} Test2', 'Test3')
    
    {{{} Main} Test} Test2
    Test3
    

Заключение, не обновляйте параметры, используя :
profiles_select['values'] = (profiles_select['values'], add_profile)


Решение : Сначала создайте свою последовательность и назначьте ее целиком один раз.

with open('profiles.txt', 'r') as file:
    profiles = json.load(file)

    options = []
    for profile in profiles:
        options.append(profile['profile_name'])

    profiles_select['values'] = options
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...