Python tkinter 列表框数据类型和格式

我有一个简单的 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()


狐的传说
浏览 244回答 1
1回答

莫回无

selection_get不是为了取回列表框中的数据。相反,它旨在获取X selection,根据定义,它是一个字符串。如果要以进入列表框的相同格式从列表框中获取数据,请使用该get方法。下面是一个列表推导式的简单示例:selecteddata = [listbox.get(index) for index in listbox.curselection()]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python