我使用以下代码创建一个包含三个输入的小部件。
我能够修改此代码以按需要格式化窗口小部件,但我需要根据窗口小部件中字段的输入复制文件。例如,如果用户输入'A'
,'1'
和'X'
,则需要将文件A1X
从网络驱动器复制到本地驱动器。
我认为我需要将每个输入字段分配给变量,然后我可以设置条件来获取正确的文件,但我无法弄清楚如何设置这些变量。
from tkinter import *
fields = 'Project #', 'Reel #', 'Batch #'
def fetch(entries):
for entry in entries:
field = entry[0]
text = entry[1].get()
print('%s: "%s"' % (field, text))
def makeform(root, fields):
entries = []
for field in fields:
row = Frame(root)
lab = Label(row, width=15, text=field, anchor='w')
ent = Entry(row)
row.pack(side=TOP, fill=X, padx=5, pady=5)
lab.pack(side=LEFT)
ent.pack(side=RIGHT, expand=YES, fill=X)
entries.append((field, ent))
return entries
if __name__ == '__main__':
root = Tk()
ents = makeform(root, fields)
root.bind('<Return>', (lambda event, e=ents: fetch(e)))
b1 = Button(root, text='OK',
command=(lambda e=ents: fetch(e)))
b1.pack(side=RIGHT, padx=5, pady=5)
b2 = Button(root, text='Reset', command=root.quit)
b2.pack(side=RIGHT, padx=5, pady=5)
root.mainloop()
答案 0 :(得分:0)
这是一个固定版本(假设条目是字典):
def fetch(entries):
filename = ''.join(entries[f].get() for f in fields)
print(filename)
#whatever you want to do with the result
答案 1 :(得分:0)
您需要使用StringVar()
并向textvariable
提供Entry()
for field in fields:
row = Frame(root)
lab = Label(row, width=15, text=field, anchor='w')
entry_variable = StringVar(root)
ent = Entry(row, textvariable=entry_variable)
row.pack(side=TOP, fill=X, padx=5, pady=5)
lab.pack(side=LEFT)
ent.pack(side=RIGHT, expand=YES, fill=X)
entries.append((field, entry_variable))
获取数据(修复缩进后):
def fetch(entries):
for entry in entries:
field = entry[0]
text = entry[1].get()
print('%s: "%s"' % (field, text))