0

x個のエントリを持つGUIがあります。出力をすべてのエントリのリストのようにしたいと思います。私は次のコードを持っています:

from Tkinter import *
master = Tk()
lijst=[]
x=0
while x<3:
    a="e"+str(x)
    lijst.append(a)
    x=x+1
x=0

labels=[]
x=1
while x<4:
    a="File"+str(x)+":"
    labels.append(a)
    x=x+1

x=0
while x<3:
    a=labels[x]
    b=Label(master,text=a)
    b.grid(row=x+1, column=0)

    x=x+1

x=0
while x<3:
    a=lijst[x]
    b=Entry(master)
    b.grid(row=x+1, column=1)
    c=Label(master, text=".txt            ")
    c.grid(row=x+1, column=1,sticky=E)
    x=x+1

Button(master, text='Enter', command=???,width=20).grid(row=4, column=2, sticky=W, pady=4,padx=20)

mainloop()   

output: list=[e0.get(),e1.get(),etc...

出力のように見え、エントリの数に依存しないリストを作成するにはどうすればよいですか?

4

1 に答える 1

1

内包リストを使用すると、エントリのリストをより簡単に作成できます。

entries = [Entry(master) for i in range(3)]

for i, entry in enumerate(entries):
    label_text = "File%s:" % (i+1)
    Label(master, text=label_text).grid(row=i, column=0)
    entry.grid(row=i, column=1)
    Label(master, text=".txt").grid(row=i, column=2, padx=(0, 15))

このリストが作成されたらget()、各エントリの呼び出しを印刷するのは簡単です。

def print_entries():
    print [entry.get() for entry in entries]

Button(master, text='Enter', width=20, command=print_entries).grid(row=4, column=3, sticky=W, pady=4,padx=20)

ここで説明するように、文字列の末尾のスペース".txt"を右のパディングに置き換えました。これはより明確です。

于 2013-03-23T16:53:54.207 に答える