получить значение из события в поле ввода - PullRequest
0 голосов
/ 03 марта 2020

# Я хочу поместить выбранный элемент из выпадающего списка в merk_entry. и выбранный элемент из списка (omschrijving) в model_entry. .get () или insert не работают в этой функции. Я попробовал их обоих. Также Comboboxselected. Я не знаю, как это исправить.

Заранее спасибо.

from tkinter import *
from tkinter.ttk import Combobox
window=Tk()
window.geometry("500x500")

wagenmerk=["BMW","Mercedes","Audi"]
Bmw=["Bmw 1 reeks","Bmw 5 reeks Berline","Bmw 7 reeks"]
Mercedes=["A-klasse","B-klasse","Eqc","C-klasse"]
Audi=["A1","A3","A4"]

def toon_info(evt):
    teller=1
    merk_info=automerk_entry.get()
    print(merk_info)
    if merk_info == "BMW":
        omschrijving.delete(0,END)
        for line in Bmw:
            omschrijving.insert(teller,Bmw[teller-1])
            teller+=1
    elif merk_info=="Mercedes":
        omschrijving.delete(0,END)
        for line in Mercedes:
            omschrijving.insert(teller,Mercedes[teller-1])
            teller+=1
    elif merk_info=="Audi":
        omschrijving.delete(0,END)
        for line in Audi:
            omschrijving.insert(teller,Audi[teller-1])
            teller+=1

automerk_text=Label(text="automerk")
merk_text=Label(text="merk")
model_text=Label(text="model")
prijs_text=Label(text="prijs")


automerk_text.place(x=15,y=70)
merk_text.place(x=280,y=100)
model_text.place(x=280,y=120)
prijs_text.place(x=280,y=140)

merk=StringVar()
model=StringVar()
prijs=StringVar()

merk_entry=Entry(textvariable=merk,width="25")
model_entry=Entry(textvariable=model,width="25")
prijs_entry=Entry(textvariable=prijs,width="25")

merk_entry.place(x=320,y=100)
model_entry.place(x=320,y=125)
prijs_entry.place(x=320,y=150)



automerk_entry=Combobox(window,values=wagenmerk,width=30)
automerk_entry.bind("<<ComboboxSelected>>",toon_info)
automerk_entry.place(x=70,y=70)

omschrijving=Listbox(window,width=30,height=10)
omschrijving.place(x=70,y=100)


#button
bereken=Button(window,text="toon",width="30",height="2",command=toon_info,bg="grey")
bereken.place(x=70,y=270)

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Вы не установили два виджета Entry для изменения значений. Ваш Comboboxselected работает как положено. Выполните следующие изменения, чтобы отразить выбор виджета Combobox и виджета Listbox для виджетов 2 Entry:

def toon_info(evt):
    teller=1
    merk_info=automerk_entry.get()
    merk.set(merk_info) # set the StringVar variable (assigned to the merk_entry widget)
    ...
    ...

Привязать виджет Listbox:

def set_item(evt):
    model.set(omschrijving.get(omschrijving.curselection()[0]))

omschrijving.bind('<<ListboxSelect>>', set_item)

И, наконец, кнопка- bereken не настроена для отправки или активации любых event / evt. Таким образом, функция обратного вызова (под опцией command) должна быть изменена

0 голосов
/ 06 марта 2020

Вот как я это исправил.

def set_item(evt):
    model_entry.delete(0,END)
    cur_selection=omschrijving.curselection()
    if len(cur_selection)>0:
      model.set(omschrijving.get(cur_selection[0]))
...