簡體   English   中英

combobox 中的字典。 如何從選定的選項中獲取價值?

[英]Dict in combobox. How to get value from selected option?

我想在 combobox 中選擇“鍵”后獲取“值”。 例如,在第一個 combobox 中,我選擇“b”,在第二個中,我選擇“e”,我希望得到這兩個選項(“7”)之和的結果。 我不知道“num1”和“num2”應該放在什么位置,或者我需要以不同的方式來做?

'''Python

import tkinter as tk
from tkinter import ttk

def main():

zestawienie={
"a": "1",
"b": "2",
"c": "3"
}

zestawienie2={
"d": "4",
"e": "5",
"f": "6"
}


root = tk.Tk()
root.title('Energy')
root.geometry('500x200')


def add():
    blank.delete(0, tk.END)
    Ans = float(num1) + float(num2)
    blank.insert(0, Ans)

tk.Label(root, text="Rodzaj źródła ciepła",bd=3).grid(column=0,row=0)
number1 = tk.StringVar()
tk.Label(root, text="System przyhotowania ciepłej wody").grid(column=0,row=2)
number2= tk.StringVar()


combo1 = ttk.Combobox(root,values=list(zestawienie.keys()),justify="center",textvariable=number1)
combo1.bind('<<ComboboxSelected>>', lambda event: label_selected.config(text=zestawienie[number1.get()]))
combo1.grid(column=0,row=1)  
combo1.current(0)




combo2 = ttk.Combobox(root,values=list(zestawienie1.keys()),justify="center",textvariable=number2)
combo2.bind('<<ComboboxSelected>>', lambda event: label_selected1.config(text=zestawienie1[number2.get()]))
combo2.grid(column=0,row=3) 
combo2.current(0)

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

label_selected1 = tk.Label(root, text="Not Selected")
label_selected1.grid(row=0, column=4)


#num1=
#num2=


blank = tk.Entry(root)
ttk.Label(root, text = "The Answer is:").grid(row=4)
blank.grid(row=4, column=1)
tk.Button(root, text='Add', command=add).grid(row=4, column=3)


root.mainloop()
if __name__ == '__main__':
main()

'''

我建議您更改的第一件事是dict中的值。 使用intfloat而不是str因為您要對值執行計算。

zestawienie={"a": 1, "b": 2, "c": 3}

zestawienie2={"d": 4, "e": 5, "f": 6}

接下來,您的代碼中有一些錯誤,例如使用錯誤的變量名。 我必須修復它才能讓 GUI 正常工作。 解決了這些問題,您提出的問題可以通過以下方式解決:

def add():
    blank.delete(0, tk.END)
    Ans = zestawienie.get(number1.get()) + zestawienie2.get(number2.get())
    blank.insert(0, Ans)

完整代碼:

import tkinter as tk
from tkinter import ttk

def main():

    zestawienie = {"a": 1, "b": 2, "c": 3}
    zestawienie2 = {"d": 4, "e": 5, "f": 6}

    root = tk.Tk()
    root.title('Energy')
    root.geometry('500x200')

    def add():
        blank.delete(0, tk.END)
        Ans = zestawienie.get(number1.get()) + zestawienie2.get(number2.get())
        blank.insert(0, Ans)

    tk.Label(root, text="Rodzaj źródła ciepła",bd=3).grid(column=0,row=0)
    number1 = tk.StringVar()
    tk.Label(root, text="System przyhotowania ciepłej wody").grid(column=0,row=2)
    number2= tk.StringVar()

    combo1 = ttk.Combobox(root,values=list(zestawienie.keys()),justify="center",textvariable=number1)
    combo1.bind('<<ComboboxSelected>>', lambda event: label_selected.config(text=zestawienie[number1.get()]))
    combo1.grid(column=0,row=1)
    combo1.current(0)

    combo2 = ttk.Combobox(root,values=list(zestawienie2.keys()),justify="center",textvariable=number2)
    combo2.bind('<<ComboboxSelected>>', lambda event: label_selected1.config(text=zestawienie2[number2.get()]))
    combo2.grid(column=0,row=3)
    combo2.current(0)

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

    label_selected1 = tk.Label(root, text="Not Selected")
    label_selected1.grid(row=0, column=4)

    blank = tk.Entry(root)
    ttk.Label(root, text = "The Answer is:").grid(row=4)
    blank.grid(row=4, column=1)
    tk.Button(root, text='Add', command=add).grid(row=4, column=3)

    root.mainloop()

if __name__ == '__main__':
    main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM