2016-07-15 69 views
0

我在尝试获取输入文本并将它们分配给Python中的变量时遇到了一些问题。这里是我的代码:将用户输入分配给Python中的变量

#!/usr/bin/python3 

from tkinter import * 
fields = 'Last Name', 'First Name', 'Job', 'Country' 

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='Show', 
      command=(lambda e=ents: fetch(e))) 
    b1.pack(side=LEFT, padx=5, pady=5) 
    b2 = Button(root, text='Quit', command=root.quit) 
    b2.pack(side=LEFT, padx=5, pady=5) 
    root.mainloop() 

当我跑这个,它设法打印出名字,工作和国家分别。但我正在使用循环来循环条目。我在考虑是否有可能得到它们中的每一个并分配给一个变量,因为我需要这些值来执行一些验证和SQL语句。

在此先感谢。

+0

是的,这是可能的。那么你的问题是什么? –

+0

我想获取每个字段的输入并将它们存储到不同的变量中。 – hyperfkcb

+0

仍然没有问题。无论如何,尝试在给定代码 –

回答

0

使entries成为全局变量。如果entries中有4个以上的字段,可能不是使用每个项目有2个字段(字段和文本)的嵌套列表,则应使每个项目包含四个字段(名,姓,工作,国家)。通过这种方式,entries中的每个条目都将具有一个项目中的所有数据。您可以对四个字段的顺序进行硬编码,并相应地访问entries以验证或SQL语句:entries[x][y],其中x指示数据的“行”,y将指示确切字段(0:姓氏,1:名字, 2:工作,3:国家)。

你甚至不需要你的fetch(entries)函数,除非你还想打印出来。

希望这会有所帮助。快乐的编码!

相关问题