我在尝试获取输入文本并将其分配给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)
使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
功能,除非您仍想将它们打印出来。
希望这会有所帮助。快乐的编码!