Python-tkinter:For循环应该从数组中收集条目并传递给文本框,只传递最后一个条目

时间:2015-11-06 23:57:21

标签: python python-2.7 tkinter tk

我是编码的新手,如果这个问题有点基础,请道歉。无论如何,这个在python中制作的GUI应该收集几个用户条目,并将它们传递给GUI中的文本框。但是现在,代码末尾的for循环只将最后一个条目放入文本框中。为什么呢?

$ mc --json ls https://s3.amazonaws.com/miniocloud | jq 'if .type == "folder" then .name else empty end'
"G/"
"Go/"
"asdfasdfadsf/"
"bin/"
"ema/"
"emacs/"
"new/"
"te1231231231231231231231/"
"test/"

2 个答案:

答案 0 :(得分:2)

问题在于:

for x in self.entry_list:
   entry = x.get()
   if entry:
        self.checktext.delete(0.0, END)
        self.checktext.insert(END, entry + "\n")

每次都要删除小部件中的所有内容,然后再将下一个字符串放入其中。要解决此问题,请不要每次都删除所有内容。如果要在重新填充之前清除窗口小部件,请将删除移出循环:

self.checktext.delete(0.0, END)
for x in self.entry_list:
   entry = x.get()
   if entry:
        self.checktext.insert(END, entry + "\n")

答案 1 :(得分:0)

好的,我明白了,男孩,我感到愚蠢。所以这是我之前的循环:

<li>

每次提交时,for x in self.entry_list: entry = x.get() if entry: self.checktext.delete(0.0, END) self.checktext.insert(END, entry + "\n") 行都会删除用户输入到文本框中的内容,但是在for循环内部删除了每个条目,然后再添加下一个条目。所以,当然,它只会显示最后一个条目,因为它删除了前几个!所以我把这条线放在for循环之外,如下所示:

self.chectext.delete(0.0, END)

现在工作正常