为什么我的python函数打印出{} Main而不是Main?

时间:2020-01-18 22:03:04

标签: python json tkinter

我正在使用一个函数来从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 个答案:

答案 0 :(得分:0)

问题:为什么我的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