2016-07-15 16 views
0

Ich habe ein Problem, wenn ich versuche, den Eingabetext zu erhalten und sie der Variablen in Python zuzuordnen. Hier sind meine Code:Zuweisen einer Benutzereingabe zu einer Variablen in 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() 

Als ich das lief, es geschafft, Vor- und Nachname, Job und Land jeweils auszudrucken. Aber ich benutze eine Schleife, um die Einträge zu durchlaufen. Ich dachte, wenn es möglich ist, jedes von ihnen zu erhalten und einer Variablen zuzuweisen, weil ich die Werte benötige, um einige Validierung und SQL-Anweisung zu machen.

Vielen Dank im Voraus.

+0

Ja, es ist möglich. Also, was ist deine Frage? –

+0

Ich versuche, die Eingabe für jedes Feld zu erhalten und sie in verschiedene Variablen entsprechend zu speichern. – hyperfkcb

+0

Immer noch keine Frage. Wie auch immer, versuchen Sie es mit 'ents [0] [1]', 'ents [1] [1]' etc im gegebenen Code –

Antwort

0

Marke entries eine globale Variable. Wenn es mehr als 4 Felder in entries gibt, sollten Sie statt einer verschachtelten Liste, in der jedes Element 2 Felder (ein Feld und Text) enthält, für jedes Element die vier Felder (Vorname, Nachname, Job, Land) verwenden). Auf diese Weise erhält jeder Eintrag in entries alle Daten in einem Element. Sie können die Reihenfolge der vier Felder einfach fest codieren und entsprechend auf entries für Ihre Validierung oder SQL-Anweisungen zugreifen: entries[x][y], wobei x die "Zeile" der Daten angibt und y das genaue Feld angibt (0: Nachname, 1: Vorname, 2: Arbeit, 3: Land).

Sie würden nicht einmal Ihre fetch(entries) Funktion benötigen, außer Sie wollten sie noch ausdrucken.

Hoffe, das hilft. Glückliche Kodierung!

Verwandte Themen