将用户输入分配给Python

时间:2016-07-15 13:59:58

标签: python variables textbox

我在尝试获取输入文本并将其分配给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语句。

提前致谢。

1 个答案:

答案 0 :(得分:0)

使import re pattern = re.compile('name=([0-9.]+)') string = '''<class 'list'>: ['com.atlassian.greenhopper.service.sprint.Sprint@6f68eefa[id=30943,rapidViewId=10468,state=CLOSED,name=2016.2.4 - XXXXXXXXXX,startDate=2016-05-26T08:50:57.273-07:00,endDate=2016-06-08T20:59:00.000-07:00,completeDate=2016-06-09T07:34:41.899-07:00,sequence=30943]']''' matches = pattern.search(string) # Only assign the value if a match is found name_value = '' if not matches else matches.group(1) 成为全局变量。如果entries中有超过4个字段,可能不是使用嵌套列表,其中每个项目有2个字段(字段和文本),您应该使每个项目包含四个字段(名字,姓氏) ,工作,国家)。这样,entries中的每个条目都将其所有数据放在一个项目中。您只需硬编码四个字段的顺序,然后相应地访问entries验证或SQL语句:entries,其中entries[x][y]表示数据的“行”和x将指出确切的字段(0:姓氏,1:名字,2:工作,3:国家)。

您甚至不需要y功能,除非您仍想将它们打印出来。

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