2016-11-30 81 views
0

从从OptionMenu infoWhen信息试图环路周围列表我尝试循环方式试图环路周围列表我得到一个错误:从从OptionMenu信息

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__ 
    return self.func(*args) 
    File "C:\Users\Dominic\Desktop\Homework creator\The accuall program.py", line 79, in create_button 
    selecting_qs() 
    File "C:\Users\Dominic\Desktop\Homework creator\The accuall program.py", line 88, in selecting_qs 
    if dif == main_list[n][1]: 
TypeError: list indices must be integers, not list 

我的目录是由与数字和字母,所以我不知道如果我的选项菜单必须是一个intiger或字符串能够搜索我的列表中的特定部分。 这是代码:

def selecting_qs(): 
    main_list = main_file_info() 
    dif = difficulty.get() 
    for n in main_list: 
     if dif == main_list[n][1]: 
      print(main_list[n][1]) 



#delating empty strings and /n from list 
def rm(list_): 
    return [x for x in list_ if x != '\n' and x != ' '] 

#main list order: 
#Question ID , Difficulty , Topic , Answer ID , Picture ID , Frequency 
def main_file_info(): 
    main_list=[] 
    main_file = open("main_file.txt","r") 
    main_file_info=main_file.readlines() 
    for line in main_file_info: 
     main_list.append(rm(line.split("@"))) 
    main_file.close() 
    return(main_list) 

回答

0

您与获取项目列表的n个main_list和使用结果作为在同一列表中的索引。如果列表中的项目是字符串或列表,则会出现错误。尝试使用下面的代码:

def selecting_qs(): 
    main_list = main_file_info() 
    dif = difficulty.get() 
    resp = [] 
    for n in main_list: 
     if dif == n[1]: 
      resp.append(n[1]) 
    return resp 
+0

谢谢你这么多,有没有可能在匹配DIFF被放在一个单独的清单列表中每个对象? –

+0

是的。只需在你的函数内创建一个列表,如果等于dif,最后返回值,最后返回创建的列表。 – daniboy000