2016-05-12 6 views
1

Ich brauche Hilfe mit einem Code zum Suchen von Namen in einer Datei, dann geben Sie alle verwandten Namen zurück. In der Eingabeaufforderung wird eine Liste korrekt gedruckt, aber in der Tkinter-GUI wiederholen die Labels, die die Namen enthalten, den letzten Wert.Rückgabe verschiedener Etiketten aus einer For-Schleife in Tkinter (Python)

Beispiel: Suche nach Luiz Fernando ->

In der Eingabeaufforderung:

[email protected]:~$ python teka.py 
L  31  LUIZ FERNANDO GONÇALVES 

L16  9  LUIZ FERNANDO SOUZA CARVALHO 

L18  3  LUIZ FERNANDO CAVALHEIRO 

L18  4  LUIZ FERNANDO S. DA SILVA 

L19  10  LUIZ FERNANDO BELUZZO DA SILVA 

in der GUI:

GUI image printscreen


der Code:

from Tkinter import * 

#search func 
def busca(): 
db = open('HD-Secretaria/morto.csv','r') #database file for name searching 
x = entrada.get().upper() 

for lines in db: 
    if x in lines: 
     print lines 
     result.set(lines) 
     Label(app, textvariable = result).pack() 


#create window 
app = Tk() 
app.title('Gerenciador de arquivo morto') 
app.geometry('500x400+200+100') 



Label(app, text = 'Gerenciador de arquivo morto').pack() #title label 
Label(app, text = 'Nome do cidadao').pack() #text label 
entrada = Entry(app) 
entrada.pack() #textbox 
Button(app, text = 'Buscar', command = busca).pack() #button 

#result label 
result = StringVar() 
result.set('') 

l = Label(app, textvariable = result).pack() 


app.mainloop() 

Ich brauche die GUI, um die Daten wie in der Eingabeaufforderung erneut zu senden.

mir helfen Jungs xD

Antwort

1

Ihr Fehler ist, dass Sie eine einzelne Variable für alle Etiketten verwenden, und eine einzelne Variable kann nur eine einzelne Zeichenfolge halten.

Sie benötigen die Option textvariable überhaupt nicht. Nur schwer Code die Zeichenfolge in der Bezeichnung:

Label(app, text=lines) 

Oder, wenn lines ist eigentlich eine Liste:

Label(app, text=" ".join(lines)) 
+0

Dank Bryan Sie wirklich myproblem, vielen Dank gelöst haben – bruno

Verwandte Themen