как переместить элементы из одного списка в другой список в tkinter - PullRequest
0 голосов
/ 24 апреля 2020

Я новичок в python и пытаюсь выучить tkinter. Может ли кто-нибудь помочь мне с этой проблемой, пожалуйста, я застрял на нем в течение нескольких дней. Я хочу переместить элемент из одного списка в другой. Сначала я попытался использовать bind и <>, но не смог заставить это работать. Затем я создал функцию и попробовал просто использовать кнопку. Я могу выбрать данные из первого списка с помощью мыши и сумел поместить их в метку, но мне действительно нужно, чтобы go во второй список - но не могу заставить это работать. Любая помощь, пожалуйста

from tkinter import *
from tkinter import ttk
my_window = Tk()

my_listbox_in = Listbox(my_window, height='5')
my_listbox_in.grid(row=0, column=0)
my_listbox_out = Listbox(my_window, height='5')
my_listbox_out.grid(row=0, column=2)

my_list = ['1', '2', '4', '6']

for item in my_list:
    my_listbox_in.insert(END, item)


def delete():
    my_listbox_in.delete(ANCHOR)
# delete all    my_listbox_in.delete(0,END)


def select():
#   my_label.config(text=my_listbox_in.get(ANCHOR))
    my_listbox_out.insert(my_listbox_in.get(ANCHOR))


button1 = Button(my_window, text='Delete', command=delete)
button1.grid(row=0, column=1)

button2 = Button(my_window, text='select', command=select)
button2.grid(row=1, column=1)


my_label = Label(my_window, text='my_label')
my_label.grid(row=2, column=1)

#my_listbox_in.bind('<<ListboxSelect>>', select())

mainloop()

1 Ответ

0 голосов
/ 24 апреля 2020

Может ли это быть так просто ...?

def select():
    my_listbox_out.insert(END, my_listbox_in.get(ANCHOR))
    # ---------------------^  forgot to specify insert point

Обновить до ответа

Что касается связывания; Я предполагаю, что вы имеете в виду привязку к клавишам со стрелками на клавиатуре. Тогда вот пример:

from tkinter import *
from tkinter import ttk

my_window = Tk()

my_listbox_in = Listbox(my_window, height='5')
my_listbox_in.grid(row=0, column=0, padx=10, pady=10)
my_listbox_out = Listbox(my_window, height='5')
my_listbox_out.grid(row=0, column=2, padx=(0,10), pady=10)
my_instructions = Label(my_window, text='Use arrow keys to move selected items')
my_instructions.grid(row=1, column=0, columnspan=3, pady=(0,10))

my_list = ['1', '2', '4', '6']

for item in my_list:
    my_listbox_in.insert(END, item)

def select(event=None):
    my_listbox_out.insert(END, my_listbox_in.get(ANCHOR))
    my_listbox_in.delete(ANCHOR)

def deselect(event=None):
    my_listbox_in.insert(END, my_listbox_out.get(ANCHOR))
    my_listbox_out.delete(ANCHOR)

my_window.bind('<Right>', select)
my_window.bind('<Left>', deselect)

mainloop()

Функции не сохраняют порядок элементов, но вы можете позволить функции обратного вызова отсортировать их, если это важно.

...