2016-10-07 3 views
0

Wie kann ich eine globale Variable in einen Wert ändern, der von einem Benutzer in einem Eingabefeld eingegeben wurde?Globale Variable in Wert ändern in Eingabefeld

card_no = 0 

def cardget(): 
    global card_no 
    card_no = e1.get() 
    print(card_no) 


def menu(): 
    global card_no 
    root = Tk() 

    e1 = Entry(root).pack() 
    Label(root, text= "Enter card number").pack(anchor= NW) 
    Button(root, text= "Confirm card", command=cardget).pack(anchor= NW) 

menu() 
+0

'' e1' None' ist, ein 'Entry' Widget nicht, wenn es ein solches Widget war es wäre immer noch nicht in "cardget" sichtbar, und es gibt keinen 'hauptroup()' in Ihrem Code, was bedeutet, dass Sie dies wahrscheinlich vom interaktiven Interpreter ausführen. – TigerhawkT3

+0

Wenn eine der folgenden Antworten Ihr Problem behebt, sollten Sie es akzeptieren (klicken Sie auf das Häkchen neben der entsprechenden Antwort). Das macht zwei Dinge. Es lässt jeden wissen, dass Ihr Problem zu Ihrer Zufriedenheit gelöst wurde, und es gibt der Person, die Ihnen hilft, die Unterstützung zuzuschreiben. Eine vollständige Erklärung finden Sie [hier] (http://meta.stackexchange.com/a/5235). –

+0

http://StackOverflow.com/Q/1101750/7432 –

Antwort

1

Verwenden Sie keine globalen Variablen. Tkinter Apps funktionieren mit OOP viel besser.

import tkinter as tk 

class App: 
    def __init__(self, parent): 
     self.e1 = tk.Entry(parent) 
     self.e1.pack() 
     self.l = tk.Label(root, text="Enter card number") 
     self.l.pack(anchor=tk.NW) 
     self.b = tk.Button(root, text="Confirm card", command=self.cardget) 
     self.b.pack(anchor=tk.NW) 
     self.card_no = 0 
    def cardget(self): 
     self.card_no = int(self.e1.get()) # add validation if you want 
     print(self.card_no) 

root = tk.Tk() 
app = App(root) 
root.mainloop() 
+0

Es sagt NW ist nicht definiert, wie kann ich das beheben? –

+0

@MathewWright Ändere diese 'NW's zu' tk.NW'. Ändern Sie auch 'command = cardget' in' command = self.cardget' –

+0

Entschuldigung. Fest. – TigerhawkT3

-1

Sie die Karte nicht aufgerufen die Funktion übergeben können, wenn die Schaltfläche geklickt wird:

import tkinter as tk 

def cardget(card_no): 
    print(card_no) 

def menu(): 
    root = tk.Tk() 
    tk.Label(root, text="Enter card number").pack(anchor=tk.NW) 
    e1 = tk.Entry(root) 
    e1.pack() 
    tk.Button(root, text="Confirm card", command=lambda *args: cardget(e1.get())).pack(anchor=tk.NW) 
    root.mainloop() 

menu()