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

2024-10-01 02:19:18 发布

您现在位置:Python中文网/ 问答频道 /正文

(不久前我提出了一个类似的问题,但没有得到真正的答复)。在

我有一个简单的Python(3.5)数据列表,用它填充一个列表框。 当我从listbox中读回所选元素时,虽然我可以使输出看起来像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()

Tags: the元素列表getindexrootglobalpack
1条回答
网友
1楼 · 发布于 2024-10-01 02:19:18

selection_get不是为获取列表框中的数据而设计的。相反,它被设计成获取X选择,根据定义,它是一个字符串。在

如果要以进入列表框的相同格式从列表框中获取数据,请使用get方法。在

下面是一个列表理解的简单示例:

selecteddata = [listbox.get(index) for index in listbox.curselection()]

相关问题 更多 >