Тип и формат данных списка Python tkinter - PullRequest
0 голосов
/ 30 октября 2018

(я задал похожий вопрос не так давно, но не получил реального ответа).

У меня есть простой список данных Python (3.5), которым я заполняю список. Когда я читаю выбранные элементы из списка, в то время как я могу сделать вывод похожим на список Python , , он на самом деле не ведет себя как список , и Я не могу обратиться к элементам в списке. Кажется, что список выглядит как строка символов.

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

Вот рабочая демонстрация проблемы:

import tkinter as tk
from tkinter import *

root = tk.Tk()

global listbox
global indatalist

indatalist = [[0, 66, 42], [553, 68, 124], [1106, 64, 3], [3321, 78, 8], [3878, 112, 102]]

listbox = tk.Listbox(root,font = 'TkFixedFont',selectmode=EXTENDED)


def Set():  # Populate the listbox:
    global listbox
    global indatalist
    print('indatalist[1][1]=',indatalist[1][1]) # Nicely prints a 2 dim list
    listbox.delete(0,'end')  # Clear the listbox
    # Populate the listbox
    for index, inlist in enumerate(indatalist):
        listbox.insert(len(indatalist),(indatalist[index][0],indatalist[index][1],indatalist[index][2]))

    listbox.pack()

def Get():  # Read back the listbox
    global listbox
    selecteddata = listbox.selection_get()
##    print(selecteddata)
    selecteddata = '[[' + (selecteddata.replace(' ',', ').replace('\n','], [') + ']]')

    """Next option is OK, but can only select one single block"""
##    startindex = min(listbox.curselection())
##    endindex = max(listbox.curselection())
##    selecteddata = listbox.get(startindex,endindex)

    """Next looks like a list of items, but acts as a list of chars"""
    print('selecteddata=',selecteddata)
    print('selecteddata[1][1]=')
    print(selecteddata[1][1]) # Error!. Can not read 2 dim list



stepbutton = tk.Button(root, text = "Set List", command = Set)
stepbutton.pack()

readbutton = tk.Button(root, text = "Get List", command = Get)
readbutton.pack()

root.mainloop()

1 Ответ

0 голосов
/ 30 октября 2018

selection_get не предназначен для возврата данных, находящихся в списке. Вместо этого он предназначен для получения X selection , который по определению является строкой.

Если вы хотите получить данные из списка в том же формате, который был в списке, используйте метод get.

Вот простой пример понимания списка:

selecteddata = [listbox.get(index) for index in listbox.curselection()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...