【发布时间】:2020-05-18 13:52:59
【问题描述】:
在一个类中工作,我试图在列表框中获取所选项目,但是当我应用选择索引时,元组似乎变成了一个字符串。
def __init__(self, parent):
# <---snip--->
self.part_no = tk.StringVar()
self.part_listbox = tk.Listbox(self, listvariable=self.part_no, selectmode='multiple')
# <---snip--->
def load_part(self):
part_list = self.part_no.get() # tuple of strings
selection = self.part_listbox.curselection() # tuple of integers
load_list = [part_list[item] for item in selection] # list of characters???
print(part_list, selection, load_list)
选择前三个值(并使用 load_part 命令按下按钮)给我输出:
('101', '201', '301', '401', '501') (0, 1, 2) ['(', "'", '1']
我预计:
('101', '201', '301', '401', '501') (0, 1, 2) ['101', '201', '301']
有人能告诉我这里发生了什么吗?
Python 3.8.2、Tkinter 8.6
【问题讨论】:
-
part_list 是元组而不是元组的字符串表示形式。
-
是什么让你认为
StringVar.get()应该返回一个元组而不是一个字符串? -
使用
ast.literal_eval真正得到一个字符串元组,即part_list = ast.literal_eval(self.part_no.get()) -
谢谢@AlbinPaul,当然是这样。
-
@quamrana,因为我误解了 Stack Overflow 上的另一篇文章,输出看起来像一个元组,这强化了我的误解。
标签: python tkinter listbox tuples