2013-04-05 1 views
0

Я хочу создать сетку ящиков ввода, которую я могу редактировать и сохранять в текстовом файле где-то в другом месте, но каждый раз, когда я запускаю свой код, если я вызываю переменную " e ", я могу редактировать только последнее поле, которое было сделано.Создание сетки ящиков ввода в Tkinter в цикле

from Tkinter import * 

class Application(Frame): 

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

    def create_widgets(self): 
     self.TXTlist = open('txtlist.txt', 'r+') 
     self.row = self.TXTlist.readline() 
     self.row = self.row.rstrip('\n') 
     self.row = self.row.replace('characters = ', "") #should end up being "6" 
     self.columns = self.TXTlist.readline() 
     self.columns = self.columns.rstrip('\n') 
     self.columns = self.columns.replace('columns = ', "") #should end up being "9" 
     i = 0 
     x = 0 
     for i in range (int(self.row)): 
      for x in range (int(self.columns)): 
       sroot = str('row' + str(i) + 'column' + str(x)) 
       e = Entry(self, width=15) 
       e.grid(row = i, column = x, padx = 5, pady = 5, sticky = W) 
       e.delete(0, END) 
       e.insert(0, (sroot)) 
       x = x + 1 
      x = 0 
      i = i + 1 
root = Tk() 
root.title("Longevity") 
root.geometry("450x250") 
app = Application(root) 
root.mainloop() 

ответ

0

Я бы сохранил записи в какой-то структуре данных, чтобы иметь легкий доступ к ним позже. список списков будет работать хорошо для этого:

self.entries = [] 
    for i in range (int(self.row)): 
     self.entries.append([]) 
     for x in range (int(self.columns)): 
      ... 
      e = Entry(self, width=15) 
      self.entries[-1].append(e) 
      ... 

Теперь у вас есть ссылки на поле ввода:

self.entries[row_idx][col_idx] 

И вы можете изменить его, как вы хотите.

+0

Спасибо @mgilson, Это сработало, и теперь я могу перейти к другой ошибке! – Nivert9

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