2015-02-14 2 views
2

Я хочу осуществить for петлю в Tkinter tkMessageBox.showinfo() в Python Мне нужно напечатать list of lists в коробке.цикл в tkMessageBox.showinfo в Tkinter питона

То, что я в настоящее время является:

tkMessageBox.showinfo(
    "Help INFORMATION", 
    "help1 help2 \n help3 help4 \n help5 help6" 
    ) 

Что я хочу: Что-то, как показано ниже ..

my_list=[['help1','help2'],['help3','help4'],['help5','help6']] 

tkMessageBox.showinfo(
     "Help INFORMATION", 
     for i in my_list: 
      i + "\n" #cant use print as I want to display it in the dialog box and not in the console. 

     ) 

Так что выход в диалоговом окне должны быть такими:

help1 help2 
help3 help4 
help5 help6 

Но я получаю:

Syntax Error -> for i in my_list: 
+0

Вы просто хотите, чтобы список был сплющен? –

+0

@AbdelrahmanElkady Отредактировано вопросом. – akshaynagpal

ответ

3

Как об этом:

my_list=[['help1','help2'],['help3','help4'],['help5','help6']] 
    tkMessageBox.showinfo(
     "Help INFORMATION", 
     '\n'.join(map(' '.join, my_list)) 
    ) 

Я не проверял, но в идеале должен делать эту работу.

+0

@A_nagpal Yup, Это ** лучший ** подход, который я пропустил –

+0

ТипError: sequence item 0: expected string, int found – akshaynagpal

+0

Вы уверены? У меня нет tKinter со мной atm, но type ('\ n'.join (map (' .join, my_list))) возвращает строку. – knsn1994

1

ОК, вы можете попробовать это, я знаю, что это не самый эффективный, но он работает!

my_list=[['help1','help2'],['help3','help4'],['help5','help6']] 


def to_tuples(list): 
    tuples = [] 
    for sublist in list : 
     tuples.append(tuple(sublist)) 
    return tuples 


def dialog_info(tuples): 
    res = "" 
    for element in tuples : 
     res += ' '.join(element) 
     res += '\n' 

    return res 

print dialog_info(my_list) 

теперь вы можете просто использовать:

my_list = [['help1', 'help2'], ['help3', 'help4'], ['help5', 'help6']] 

tkMessageBox.showinfo(
    "Help INFORMATION", 
    dialog_info(my_list) 
) 
1

Вы можете использовать

'\n'.join(map(' '.join, my_list)) 

вместо для цикла.

Смежные вопросы