Tkinter: Как преобразовать кортеж из списка в список? - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь создать список из списка элементов в списке. Однако вместо фактического списка я получаю кортеж взамен. Вот пример того, о чем я говорю, пожалуйста, посмотрите:

from tkinter import*

root=Tk()

mylistbox=Listbox(root,width=60,height=10)
mylistbox.pack()

for items in range(0,11):
    mylistbox.insert(END,items)
list_of_numbers = []

list_of_numbers.append(mylistbox.get(0, END))

print(list_of_numbers)
print(list(list_of_numbers))

root.mainloop()

Выход:

[(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)]

Желаемый вывод:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Это происходит потому, что список содержит кортеж, и этот кортеж имеет элементы:

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Вам нужно пройтись по списку, а затем по кортежу, чтобы извлечь каждый элемент и добавить их в список. Проверьте код ниже:

from tkinter import*

root=Tk()

mylistbox=Listbox(root,width=60,height=10)
mylistbox.pack()

for items in range(0,11):
    mylistbox.insert(END,items)
list_of_numbers = []

list_of_numbers.append(mylistbox.get(0, END))

print(list_of_numbers)
mylist = []
for number in list_of_numbers[0]:
    mylist.append(number)
print(mylist)

root.mainloop()

Выход:

[(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
0 голосов
/ 06 ноября 2018

Вам нужно перебрать кортеж, созданный mylistbox.get(0, END), чтобы добавить каждый элемент кортежа в список вместо того, чтобы добавлять кортеж в список напрямую.

import tkinter as tk


root = tk.Tk()

mylistbox = tk.Listbox(root,width=60,height=10)
mylistbox.pack()

for items in range(0,11):
    mylistbox.insert("end", items)
list_of_numbers = []

for item in mylistbox.get(0, "end"):
    list_of_numbers.append(item)

print(list_of_numbers)

root.mainloop()

Вы также можете использовать list() непосредственно на результатах mylistbox.get(0, "end"), чтобы получить те же результаты, что и выше, и он станет удобным одним вкладышем:

import tkinter as tk


root = tk.Tk()

mylistbox = tk.Listbox(root,width=60,height=10)
mylistbox.pack()

for items in range(0,11):
    mylistbox.insert("end", items)

list_of_numbers = list(mylistbox.get(0, "end"))

print(list_of_numbers)

root.mainloop()

Результаты:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...