Python. Tkinter. Передача индексов списков в Label
я не могу понять как передавать номер выбранного в Combobox элемента списка как в качестве индекса другого списка. Другими словами как сделать так, чтобы выбор имени
srcValute["values"] = ...
был сопряжен с выбором значения
lbl0 = Label(tab1,text=values)
для последующей передачи его в текстовый ярлык ? Да и вообще уместна ли такая передача ?
Привожу исходный код :
from tkinter import *
import tkinter.ttk as ttk
import urllib.request
import xml.dom.minidom
response = urllib.request.urlopen(\
"http://www.cbr.ru/scripts/XML_daily.asp?date_req=20/05/2000")
print(response)
print('result code: ' + str(response.getcode()))
print(response)
print('result code: ' + str(response.getcode()))
#read_page = response.read()
#print(read_page.decode('utf-8'))
#print(read_page)
doc = xml.dom.minidom.parse(response)
valute = doc.getElementsByTagName("Valute")
names = []
values = []
for val in valute:
name = val.getElementsByTagName("Name")[0]
names.append(name.firstChild.data)
value = val.getElementsByTagName("Value")[0]
values.append(value.firstChild.data)
selByName = [i for i in names]
window = Tk()
window.title("Конвертер валют")
tab_control = ttk.Notebook(window)
tab1 = ttk.Frame(tab_control)
tab2 = ttk.Frame(tab_control)
tab_control.add(tab1, text="Курс")
tab_control.add(tab2, text="График")
srcValute = ttk.Combobox(tab1)
srcValute["values"] = selByName
srcValute.grid(column=0, row=0)
srcValute.bind("<<ComboboxSelected>>",lambda x : print(names[:1]))
convValute = ttk.Combobox(tab1)
convValute["values"] = selByName
convValute.grid(column=2, row=0)
txt = Entry(tab1)
#lbl0 = Label(tab1,text=)
#lbl0.grid(row=2,column=5,sticky="w")
tab_control.pack(expand=1,fill='both')
window.mainloop()
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
К событию <<ComboboxSelected>> нужно привязать функцию, которая будет проставлять в label индекс элемента:
lbl0 = Label(tab1)
lbl0.grid(row=2,column=5,sticky="w")
def set_label_text(event):
lbl0["text"] = str(srcValute.current())
srcValute.bind("<<ComboboxSelected>>", set_label_text)