Tkinter设置Button对应的Entry框的值

时间:2014-10-26 18:59:16

标签: python tkinter

我已经被困在这一段时间了。我基本上试图创建一个允许我加载多个文件的应用程序。目前,该应用程序有6"浏览"按钮,以及相应的Entry框旁边。我试图让浏览按钮将文件位置字符串发送到它旁边的Entry框。不幸的是,目前它只将文件名字符串附加到底部的Entry框中。如何将其输出到相应行的框中?

希望这个解决方案能帮助我理解当我按下执行时如何获得正确的值!

到目前为止我所得到的是以下内容。

提前致谢

    r=3
    for i in range(6):
        #CREATE A TEXTBOX
        self.filelocation = Entry(self.master)
        self.filelocation["width"] = 60
        self.filelocation.focus_set()
        self.filelocation.grid(row=r,column=1)

        #CREATE A BUTTON WITH "ASK TO OPEN A FILE"
        self.open_file = Button(self.master, text="Browse...", command=lambda i=i: self.browse_file(i))
        self.open_file.grid(row=r, column=0) #put it beside the filelocation textbox

        #CREATE A TEXT ENTRY FOR HELICOPTER ROUTE NAME
        self.heliday = Entry(self.master)
        self.heliday["width"] = 20
        self.heliday.grid(row=r,column=2)
        r = r+1

    #now for a button
    self.submit = Button(self.master, text="Execute!", command=self.start_processing, fg="red")
    self.submit.grid(row=r+1, column=0)

def start_processing(self):
    #more code here
    print "processing"

def browse_file(self, i):
    #put the result in self.filename
    self.filename = tkFileDialog.askopenfilename(title="Open a file...")

    #this will set the text of the self.filelocation
    self.filelocation.insert(0,self.filename)

1 个答案:

答案 0 :(得分:0)

您必须保留对所有Entry框的引用。为此,您可以将条目创建更改为:

self.filelocation = []
for i in range(6):
    #CREATE A TEXTBOX
    self.filelocation.append(Entry(self.master))
    self.filelocation[i]["width"] = 60
    self.filelocation[i].focus_set()
    self.filelocation[i].grid(row=r,column=1)

这样,您可以保留对列表中所有Entry框的引用。然后,您可以使用以下命令确保文件名符合正确的Entry

self.filelocation[i].insert(0,self.filename)