2015-11-26 2 views
0

Я новичок в Python. Я хотел создать несколько списков и прочитать записи из списков. Количество списков зависит от размера списка с именем «результат», определенного в начале кода. Длина списка «результат» не является постоянной. В зависимости от выбора, сделанного в списках, необходимо выполнить дальнейшие операции.Множество списков в python динамически с Tkinter

код я в конечном итоге, как:

result = ['Weekly','Monthly',Annual] 
class Application(Frame): 

def __init__(self,master): 
    Frame.__init__(self,master) 
    self.grid() 
    self.create_widgets() 

def create_widgets(self): 
    for inst in result: 



     textenter = "Select the required output format" + inst 

     self.Label[inst] = Label(self,text = textenter) 
     self.Label[inst].grid(columnspan = 2, sticky = W) 

     self.Listbox[inst] = Listbox(self, selectmode = MULTIPLE,exportselection = 0) 
     self.Listbox[inst].grid(sticky = W) 


     for items in ["Text","XML","HTML"]: 
      self.Listbox[inst].insert(END,items) 



    self.submit_button = Button(self, text = "Submit",command = self.returns) 
    self.submit_button.grid(row = 7, column = 1, sticky = W) 

    self.content = [] 



def returns(self): 
    for inst in result: 
     self.content.append(self.Listbox[inst].curselection()) 
     print self.content 


    self.master.destroy()  


root = Tk() 

app = Application(master = root) 
root.title("Output Formats") 
app.mainloop() 
print app.content 

я получаю только один ListBox с этим кодом, но я получаю определенное число меток я застрял после этого момента. Не мог получить дальше. Пожалуйста, помогите мне. Заранее спасибо. Пожалуйста, дайте мне знать, если информация не ясна. Я открыт для совершенно нового кода.

+0

КСТАТИ:. Использование словаря 'self.listbox [инст]' вместо 'я ("Listbox" + инст)' – furas

+0

Изменено, как вы сказали. Отредактировано в моем посте тоже. Улучшений пока нет –

ответ

1

Ваш код (с небольшими изменениями) работает для меня.

Я не знаю, почему у вас есть проблема.

Я положил рабочий код

import Tkinter as tk 

result = ['Weekly', 'Monthly', 'Annual'] 

class Application(tk.Frame): 

    def __init__(self, master): 
     tk.Frame.__init__(self, master) 
     self.grid() 
     self.create_widgets() 

    def create_widgets(self): 
     self.listbox = dict() # lower case for variable name 
     self.label = dict() # lower case for variable name 

     for inst in result: 
      #textenter = "Select the required output format" + inst 
      textenter = inst 

      self.label[inst] = tk.Label(self, text=textenter) 
      self.label[inst].grid(columnspan=2, sticky=tk.W) 

      self.listbox[inst] = tk.Listbox(self, selectmode=tk.MULTIPLE, exportselection=0) 
      self.listbox[inst].grid(sticky=tk.W) 

      for items in ["Text", "XML", "HTML"]: 
       self.listbox[inst].insert(tk.END,items) 

     self.submit_button = tk.Button(self, text="Submit", command=self.returns) 
     self.submit_button.grid(row=7, column=1, sticky=tk.W) 


    def returns(self): 
     self.content = [] 

     for inst in result: 
      self.content.append(self.listbox[inst].curselection()) 

     print self.content 

     self.master.destroy()  


root = tk.Tk() 
app = Application(root) 
root.title("Output Formats") 
app.mainloop() 
+0

Теперь он работает. Я предполагаю, что это номер строки и столбца, вызвавший эту проблему. –

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