Я хочу получить значение из списка, tkinter - PullRequest
0 голосов
/ 14 января 2019

Когда я нажимаю элемент из listbox, я хочу получить это значение и распечатать его на этикетке.

Я пытаюсь выяснить, и я получил имя функции <<ListboxSelect>>, но мне не удалось получить значение. Что я могу сделать, это просто распечатать значение.

То, что я хочу, это когда я нажимаю элемент в listbox, я хочу, чтобы он был напечатан на этикетке.

1 Ответ

0 голосов
/ 14 января 2019

Ниже приведен пример того, что вы хотите сделать.

import tkinter as tk

root = tk.Tk()

def update(*args):
    a = lbox.curselection() #note a is a tuple containing the line numbers of the selected element counting from 0. 
    print( type(a), a )
    lb_value.set( countrynames[ a[0] ] ) #Update the control variable's value.

countrynames = ('Argentina', 'Australia', 'Belgium', 'Brazil', 'Canada',
                'China', 'Denmark', 'Finland', 'France', 'Greece', 'India')
listCon = tk.StringVar( value=countrynames )
lbox = tk.Listbox(root, listvariable=listCon, height=10, selectmode=tk.SINGLE,)
lbox.grid(row=0, column=0)
lbox.bind('<<ListboxSelect>>', update)

lb_value=tk.StringVar()
lb = tk.Label(root, textvariable=lb_value, bg='yellow')
lb.grid(row=0, column=1)

root.mainloop()

Вам необходимо передать выбранный элемент Listbox в Управляющую переменную , которая считывается опцией textvariable виджета Label. В зависимости от типа данных в вашем списке, вы должны выбрать подходящий тип управляющей переменной, например, StringVar(), IntVar() или DoubleVar(). В моем примере используется StringVar(), потому что содержимое countryname является строковым типом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...