Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter组合框和字典_Python_Dictionary_Tkinter_Combobox - Fatal编程技术网

Python tkinter组合框和字典

Python tkinter组合框和字典,python,dictionary,tkinter,combobox,Python,Dictionary,Tkinter,Combobox,我是Python新手,遇到了以下问题。我创建了一个以材质为键,以折射率为值的字典 用户从组合框中选择材质。同时,我想展示所选材料的折射率。但我不能让它工作! 下面是我的代码。谢谢你的帮助 from tkinter import * from tkinter import ttk def main(): materialDict = {'XO': 1.415, 'XO2': 1.424, 'Opt-EX': 1.431, 'TYRO-97': 1.44, 'AC-100': 1.415

我是Python新手,遇到了以下问题。我创建了一个以材质为键,以折射率为值的字典

用户从组合框中选择材质。同时,我想展示所选材料的折射率。但我不能让它工作! 下面是我的代码。谢谢你的帮助

from tkinter import *
from tkinter import ttk

def main():

    materialDict = {'XO': 1.415, 'XO2': 1.424, 'Opt-EX': 1.431, 'TYRO-97': 1.44, 'AC-100': 1.415, 'Paragon': 1.442}

    root = Tk()
    root.geometry("1600x800+0+0")
    root.title("TEST Form")
    root.configure(bg='Dodgerblue4')

    label_material = Label(root, text='Choose Material', bd=3, width=20, height=3).grid(row=0, column=1)
    var_material = StringVar()
    combo_material = ttk.Combobox(root, values=list(materialDict.keys()), justify=CENTER, textvariable=var_material)
    combo_material.grid(row=0, column=2)
    combo_material.current(0)

    label_selected = Label(root, text="Here I want to print the value of the combobox selected item ")
    label_selected.grid(row=1, column=3)

    root.mainloop()

    return

if __name__ == '__main__':
    main()

可以使用
lambda
完成此操作。您需要将
事件绑定到回调函数。我没有编写单独的函数,而是在那里自己进行了标签配置

import tkinter as tk
from tkinter import ttk

def main():

    materialDict = {'XO': 1.415, 'XO2': 1.424, 'Opt-EX': 1.431, 'TYRO-97': 1.44, 'AC-100': 1.415, 'Paragon': 1.442}

    root = tk.Tk()
    root.title("TEST Form")
    root.configure(bg='Dodgerblue4')

    tk.Label(root, text='Choose Material', bd=3).grid(row=0, column=0)
    var_material = tk.StringVar()
    combo_material = ttk.Combobox(root, values=list(materialDict.keys()), justify="center", textvariable=var_material)
    combo_material.bind('<<ComboboxSelected>>', lambda event: label_selected.config(text=materialDict[var_material.get()]))
    combo_material.grid(row=0, column=1)
    combo_material.current(0)

    label_selected = tk.Label(root, text="Not Selected")
    label_selected.grid(row=1, column=1)

    root.mainloop()

if __name__ == '__main__':
    main()
将tkinter作为tk导入
从tkinter导入ttk
def main():
materialDict={'XO':1.415,'XO2':1.424,'Opt-EX':1.431,'TYRO-97':1.44,'AC-100':1.415,'Paragon':1.442}
root=tk.tk()
根标题(“测试表”)
root.configure(bg='Dodgerblue4')
标签(根,text='Choose Material',bd=3).grid(行=0,列=0)
var_material=tk.StringVar()
combo_material=ttk.Combobox(根,值=list(materialDict.keys()),justify=“center”,textvariable=var_material)
combo_material.bind(“”,lambda事件:label_selected.config(text=materialDict[var_material.get()]))
组合_material.grid(行=0,列=1)
组合_材质。当前(0)
label_selected=tk.label(根,text=“未选择”)
标签\u选定。网格(行=1,列=1)
root.mainloop()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()

您可以使用两种方法
combo\u material.bind(“,callback\u method)
var\u material.trace('w',callback\u method)
但是由于您的非类结构,从这些方法更新标签可能不容易。非常感谢。在组合框中选择材料时,我实际上需要在标签上打印字典值(折射率)。@PaymanRajai已编辑。看一看。您只需使用
materialDict[…]
引用它即可。