通过单击一个按钮创建四个条目,并将它们添加到列表中

时间:2019-01-01 20:26:28

标签: python tkinter

我正在创建一个应用程序,单击一个按钮可以在其中创建更多条目。我成功完成了任务,但是问题是,我想收集在这些多个条目中输入的数据,然后我意识到它们没有可用来调用的变量名。如何创建这些条目并在其他功能中使用它们?代码太多,无法粘贴到这里。

    self.window_w = 1400
    self.window_h = 600
    self.button_x = 80
    self.button_oddx = 460
    self.button_y = 110
    self.counter = 0


    def moving_But(self):
        self.all_ent = []
        self.all_entry = []
        if (self.button_y < self.window_h - 50):
            self.counter +=1
            self.button_y = self.button_y + 40

            self.b.place_forget()
            self.b.place(x=self.button_x, y=self.button_y+30)

            self.entrybox = Entry(self, width=10).place(x=10, 
y=self.button_y-20)
        self.entrybox2 = Entry(self, width=10).place(x=100, 
y=self.button_y-20)
        self.vs = Label(self, text='vs', font=('Lucida Calligraphy', '15', 
'bold'), fg='#773c00', bd=5,
                            bg='#c9e3c1').place(x=60, y=self.button_y-25)
            self.WinEnt1= Entry(self, width=6)
            self.DrawEnt1 = Entry(self, width=6)
            self.LoseEnt1= Entry(self, width=6)
            self.OthersEnt1 = Entry(self, width=6)
            self.WinEnt1.place(x=310, y=130)
            self.DrawEnt1.place(x=360, y=130)
            self.LoseEnt1.place(x=410, y=130)
            self.OthersEnt1.place(x=460, y=130)
            if self.counter == 2:
                self.all_ent.append(Entry(self, width=6))
                self.all_ent.append(Entry(self, width=6))
                self.all_ent.append(Entry(self, width=6))
                self.all_ent.append(Entry(self, width=6))
                self.all_ent[0].place(x=310, y=self.button_y -20)
                self.all_ent[1].place(x=360, y=self.button_y - 20)
                self.all_ent[2].place(x=410, y=self.button_y - 20)
                self.all_ent[3].place(x=460, y=self.button_y - 20)
            elif self.counter == 3:
                self.all_ent.append(Entry(self, width=6))
                self.all_ent.append(Entry(self, width=6))
                self.all_ent.append(Entry(self, width=6))
                self.all_ent.append(Entry(self, width=6))
                self.all_ent[4].place(x=310, y=self.button_y - 20)
                self.all_ent[5].place(x=360, y=self.button_y - 20)
                self.all_ent[6].place(x=410, y=self.button_y - 20)
                self.all_ent[7].place(x=460, y=self.button_y - 20)

1 个答案:

答案 0 :(得分:0)

您可以将每个条目与文本变量相关联,并将它们存储在列表中。我已经提供了该机制的示例。

from tkinter import *

root = Tk()
root.geometry('300x200')

entry_list = [] # List to hold all textvariables corresponding to entrys

def new_entry(): 
    print('Creating entry no.', len(entry_list)) # Log creation to console
    v = StringVar() # Create new textvariable
    e = Entry(root, textvariable=v)
    e.pack(pady=(10,0))
    entry_list.append(v) # Append textvariable to list

Button(root, text='New entry', command=new_entry).pack(pady=(10,0))

root.mainloop()