Python tkinter组合框和字典
我是Python新手,遇到了以下问题。我创建了一个以材质为键,以折射率为值的字典 用户从组合框中选择材质。同时,我想展示所选材料的折射率。但我不能让它工作! 下面是我的代码。谢谢你的帮助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
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[…]
引用它即可。