2017-02-14 2 views
0

Ich arbeite an einem kleinen Tkinter-Programm, bei dem Sie aufgefordert werden, einen Namen einzugeben, und nach dem Klicken auf "Senden" wird "Willkommen in meiner Welt" angezeigt. Ich habe Probleme, entweder die Eingabe abzurufen und sie in einem neuen Fenster anzuzeigen oder das Fenster mit den neuen Informationen zu aktualisieren, aber es zeigt Py_Var1 als den Eintragsnamen an. Was mache ich falsch, weil ich versuche, Informationen in einem neuen Fenster anzuzeigen, oder verwende ich die Funktionen falsch?Aktualisieren oder Zurücksetzen einer Tkinter-Anzeige

Hier ist mein Code

from tkinter import * 

root = Tk() 

#Functions 

def info(): 
    a= entry_1.get() 


def close_window(root): 
     root.destroy() 
def comb(event=None): 
     info() 
     close_window(root) 



#Display 
input_1 = Label(root, text=" Name: ", bg= "light grey", fg="blue", font=("Arial", 16)) 
entry_1 = Entry(root, bg= "white", fg= "black", bd= 5, relief= SUNKEN, font=("Arial", 12)) 
button = Button(root, text="Submit", command=comb, bd= 6, relief= RAISED, fg='blue', font=("Arial", 12)) 
root.bind("<Return>", comb) 

aVar = StringVar(entry_1.get()) 
aVar.set(aVar) 
#entry display 
input_1.grid(row=1, sticky=E) 
entry_1.grid(row=1, column=1) 
button.grid(row=3, column=1) 

root.mainloop() 
##Second Window 
root = Tk() 

Var = StringVar() 
Var.set(info) 

t1 = Label(root, text="Welcome") 
t2 = Label(root, text= Var) 
t3 = Label(root, text="to my world") 

#Display 

t1.grid(row=1, column=1) 
t2.grid(row=1, column=2) 
t3.grid(row=1, column=3) 

root.mainloop() 
+0

Versuchen Sie, diese Website nach 'PY_VAR1' zu durchsuchen. –

+0

Mögliches Duplikat von [Wie erhält man den Eintragswert mit PY \ _VAR0 oder PY \ _VAR1?] (Http://stackoverflow.com/questions/23986010/how-to-get- Eingabe-Wert-Verwendung-Py-Var0-oder-Py-Var1) – zanussi

Antwort

0

Ich denke, das Problem war, dass man eine Variable zuzugreifen versucht, die Sie zugewiesen, bevor Sie das Fenster zerstört, nachdem es zerstört wurde, die Tkinter nicht tun können. Benötigte eine globale Variable. Dein Code sollte jetzt funktionieren.

from tkinter import * 

root = Tk() 

#Functions 

def info(): 
    global a 
    a= entry_1.get() 


def close_window(root): 
     root.destroy() 
def comb(event=None): 
     info() 
     close_window(root) 



#Display 
input_1 = Label(root, text=" Name: ", bg= "light grey", fg="blue", font=("Arial", 16)) 
entry_1 = Entry(root, bg= "white", fg= "black", bd= 5, relief= SUNKEN, font=("Arial", 12)) 
button = Button(root, text="Submit", command=comb, bd= 6, relief= RAISED, fg='blue', font=("Arial", 12)) 
root.bind("<Return>", comb) 


#entry display 
input_1.grid(row=1, sticky=E) 
entry_1.grid(row=1, column=1) 
button.grid(row=3, column=1) 

root.mainloop() 
##Second Window 
root = Tk() 

t1 = Label(root, text="Welcome "+str(a)+" to my world") 
##t2 = Label(root, text= Var) 
##t3 = Label(root, text="to my world") # cleaner this way 

#Display 

t1.grid(row=1, column=1) 
#t2.grid(row=1, column=2) 
#t3.grid(row=1, column=3) 

root.mainloop() 
0

Es läuft nicht, weil es viele Fehler und keine Logik gibt. Sie verwenden viele Funktionen ohne Grund und keiner von ihnen gibt Werte zurück. Sie zerstören auch das Eintrags-Widget, das das Hauptfenster schließt, und danach fragen Sie , dass Sie den Text aus dem Eintrag, den Sie gerade zerstört haben, mit einer Funktion erhalten, die nichts zurückgibt. Selbst wenn Sie das Root-Fenster nicht zerstören und ein Toplevel-Fenster verwenden, funktioniert dieses Programm immer noch nicht, weil Ihre Funktion nichts zurückgibt.

Es sieht so aus, als ob Sie die grundlegende Verwendung von Funktionen nicht verstehen. Erwägen Sie, mit Funktionen mit einfachen Programmen zu spielen, bevor Sie etwas komplizierteres ausprobieren.

Verwandte Themen