2016-07-15 5 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

Все еще не вопрос. В любом случае попробуйте получить доступ к 'ents [0] [1]', 'ents [1] [1]' и т. Д. В заданном коде –

ответ

0

Сделать entries глобальной переменной. Если в имеется более 4 полей, возможно, вместо использования вложенного списка, в котором каждый элемент имеет 2 поля (поле и текст), вы должны сделать каждый элемент четырьмя полями (имя, фамилия, задание, страна). Таким образом, каждая запись в entries будет иметь все свои данные в одном элементе. Вы можете просто упорядочить порядок четырех полей и соответственно получить доступ к entries для ваших утверждений или операторов SQL: entries[x][y], где x указывает, что «строка» данных и y будут указывать точное поле (0: фамилия, 1: имя, 2: работа, 3: страна).

Вам даже не понадобится ваша функция fetch(entries), если вы все еще не хотите распечатывать их.

Надеюсь, это поможет. Счастливое кодирование!

Смежные вопросы