python - 如何从 JSON 多维附加动态下拉列表

标签 python tkinter python-3.7

如何从 json 多维附加显示文本和值附加下拉列表。

显示文本 = DId 值 = LocId

from functools import partial
from tkinter import *
from tkinter import messagebox

def ShowValue(val) :
    messagebox.showinfo('Message',val)
    return

def CallFunc():
    data = [{'DId': '158d0002f2f156', 'LocId': '9', 'status': '1', 'DateRec': '2019-08-23 15:34:43'},
           {'DId': '158d0002f2f431', 'LocId': '19', 'status': '1', 'DateRec': '2019-08-23 22:29:58'},
           {'DId': '158d0002f2f321', 'LocId': '12', 'status': '1', 'DateRec': '2019-08-23 16:15:56'},
           {'DId': '158d0002f2f544', 'LocId': '13', 'status': '1', 'DateRec': '2019-08-27 17:53:48'}]
    return data

gui = Tk()
gui.geometry("500x200")
gui.title("Test Temperature")
gui.configure(background="white")

lab00 = Label(gui, text="Select Devices : ", bg="white")
lab00.grid(row=0, column=0)

option = StringVar()
Value = CallFunc()
for i in range(len(Value)) :
    menu = OptionMenu(gui,option,Value[i]['DId'])

menu.grid(row=0,column=1)

btn = Button(gui, text="Show",command=partial(ShowValue,option.get()))
btn.grid(row=4,column=1)

gui.mainloop()

最佳答案

您可以通过列表理解获取值:

option = StringVar()
menu = OptionMenu(gui, option, *[i.get("DId") for i in CallFunc()])
menu.grid(row=0, column=1)

对于按钮命令,您可以使用 lambda 代替:

btn = Button(gui, text="Show", command=lambda: ShowValue(option.get()))

要获取 json 文件的值,请在 ShowValue 函数中进行查找:

def ShowValue(val) :
    for i in CallFunc():
        if val in i.values():
            message = i.get("LocId")
            messagebox.showinfo('Message',message)
            return

关于python - 如何从 JSON 多维附加动态下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57864393/

相关文章:

python - 包含列表列表的文本文件的串联?

python - 组织 tkinter 应用程序

macos - 在 Mac 上安装 Python3.6 和 Python3.7

python - 它们是 "same"吗? (代码 war )

python - 名称错误 : name 'stopwords' is not defined

python - NoReverseMatch django - 不是有效的 View 函数或模式

Python Tkinter : TypeError: 'Frame' object is not callable

Python Canvas 用鼠标tkinter移动项目

python - 从 URL 列表生成树

postgresql - psycopg2游标获取结果集的所有顺序