Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将StringVar值转换为列表_Python_String_List_Tkinter_Tuples - Fatal编程技术网

Python 将StringVar值转换为列表

Python 将StringVar值转换为列表,python,string,list,tkinter,tuples,Python,String,List,Tkinter,Tuples,我一直在做一个Tkinter项目。我已经将列表框设置为StringVar,我想通过设置函数“进程”来调用右侧列表框中的项目列表 在gui中按下按钮进程后,在上述情况下,我应该返回一个列表['a']。 但是,它返回['(',“','A',“',”)'] 如果我只是打印app.list\u var2.get()它返回('A',) 将tkinter作为tk导入 作为pd进口熊猫 app=tk.tk() 应用几何(“640x480”) 应用程序可调整大小(宽度=真,高度=真) 应用程序标题(“模拟器”

我一直在做一个Tkinter项目。我已经将列表框设置为StringVar,我想通过设置函数
“进程”
来调用右侧列表框中的项目列表

在gui中按下按钮进程后,在上述情况下,我应该返回一个列表
['a']
。 但是,它返回
['(',“','A',“',”)']

如果我只是
打印app.list\u var2.get()
它返回
('A',)

将tkinter作为tk导入
作为pd进口熊猫
app=tk.tk()
应用几何(“640x480”)
应用程序可调整大小(宽度=真,高度=真)
应用程序标题(“模拟器”)
#列出变量
app.list_var1=tk.StringVar()
app.list_var2=tk.StringVar()
app.list_var1.set(值=['A'、'B'、'C'])
app.list_var2.set(值=[])
#标签架
app.label\u frame=tk.frame(app)
app.label1=tk.Label(app.Label\u框架,text='PDC',justify='left')
app.label1.pack(ipadx=10,ipady=10,side='left',anchor='w')
app.label2=tk.Label(app.Label\u框架,text='SDC')
app.label2.pack(ipadx=20,ipady=10,side='left',anchor='e')
#主机架
app.main_frame=tk.frame(app)
app.listbox1=tk.Listbox(app.main\u frame,listvariable=app.list\u var1,selectmode='single')
app.listbox2=tk.Listbox(app.main\u frame,listvariable=app.list\u var2,selectmode='single')
def init_默认值():
app.list_var1.set(值=['A'、'B'、'C'])
app.list_var2.set(值=[])
def向右移动(只有一项=False):
如果app.listbox1.curselection()==():
返回
#获取所选索引的元组
如果只有一个项目:
选择=(app.listbox1.curselection()[0],)
其他:
selection=app.listbox1.curselection()
#保留所有/选定值
左\u值\u列表=[line.strip('\'')用于app.list\u var1.get()[1:-1]。拆分(',')]
left_selected_list=[left_value_list[index]用于选择中的索引]
#来自右侧的值
右\u值\u列表=[line.strip('\'')用于app.list\u var2.get()[1:-1]。拆分(',')]
#合并,不包含重复项
结果列表=已排序(列表(设置(右值列表+左选定列表)))
对于左值列表中的x:
如果结果列表中有x:
左值列表。删除(x)
而左值列表中的(“):
左值列表。删除(“”)
而结果列表中的(“):
结果列表。删除(“”)
app.list\u var2.set(值=结果\u列表)
app.list\u var1.set(value=left\u value\u list)
def向左移动(只有一项=False):
如果app.listbox2.curselection()==():
返回
#获取所选索引的元组
如果只有一个项目:
选择=(app.listbox2.curselection()[0],)
其他:
selection=app.listbox2.curselection()
#右键单击所有/选定的值
右\u值\u列表=[line.strip('\'')用于app.list\u var2.get()[1:-1]。拆分(',')]
右键选中的\u列表=[右键选中的索引的值\u列表[索引]
#来自左侧的值
左\u值\u列表=[line.strip('\'')用于app.list\u var1.get()[1:-1]。拆分(',')]
#合并,不包含重复项
结果列表=已排序(列表(设置(左值列表+右选定列表)))
对于右值列表中的x:
如果结果列表中有x:
右值列表。删除(x)
而右值列表中的(“):
右键\u值\u列表。删除(“”)
而结果列表中的(“):
结果列表。删除(“”)
app.list\u var1.set(值=结果\u列表)
app.list\u var2.set(value=right\u value\u list)
def reset():
初始默认值()
def进程():
#如果len(app.list_var2.get())==1:
lst=app.list_var2.get()
打印(透镜(lst))
lst=str(app.list_var2.get()).replace(',','')
lst=列表(lst)
打印(类型(lst))
打印(透镜(lst))
打印(lst)
#小钮扣架
app.button\u frame=tk.frame(app.main\u frame)
app.one_to_right_button=tk.button(app.button_frame,text='>',command=lambda:move_to_right(True))

app.one_to_left_button=tk.button(app.button_frame,text=',因为
app.list_var2
是一个
StringVar
,所以
app.list_var2.get()
将始终返回一个字符串

最好使用
app.listbox2.get(0,“end”)
获取列表框中的所有项(一个元组):

def process():
    lst = list(app.listbox2.get(0, 'end'))
    print(lst, type(lst))
请注意,您可以使用
eval()
app.list\u var2.get()
返回的字符串转换为
tuple
,但不建议:

def process():
    lst = list(eval(app.list_var2.get()))
    print(lst, type(lst))

第一种方法有效!非常感谢您的帮助!!
def process():
    lst = list(eval(app.list_var2.get()))
    print(lst, type(lst))