2016-09-17 1 views
-1

So ist mein Programm so fließt. Der Benutzer lädt eine Datei über das Menü und die loadFile-Funktion wird aufgerufen.Holen Sie sich die Rückgabewerte aus Pythons tkinter Menü

Figure 1

def loadFile(): 
    dictList = defaultdict(list) 
    filename = askopenfilename(filetypes=[("text files","*.txt")]) 
    #process the file content and store in dictList 
    return dictList 

nun in der GUI, wenn der Benutzer klickt auf die Last Datei-Menü, wird Load-Datei aufgerufen. Da loadfile mir ein dictList-Objekt zurückgibt, das ich später für die weitere Verarbeitung brauche. Wie bekomme ich das zurückgegebene Objekt, ohne globale Variablen zu verwenden? Ich bin auch nicht objektorientiert.

fileMenu.add_command(label="Load File", command=loadFile) 
+0

Liebe, wenn Leute beide ignorieren - globale Variablen und OOP! –

+0

Grundsätzlich möchte ich die dictList speichern, die loadfile() return. Wie speichere ich das? loadFile() wird aufgerufen, wenn der Benutzer im Menü auf "Datei laden" klickt. – ysj

Antwort

1

Sie können es nicht tun, ohne eine globale Variable zu verwenden. Die Variable muss so gespeichert werden, dass auf sie von mehreren Funktionen aus zugegriffen werden kann. Da Sie keine Objekte verwenden, ist Ihre einzige Wahl, eine globale Variable zu verwenden.

technisch gesehen ist es nicht Ihre nur Wahl. Sie können eine Datenbank beliebiger Art verwenden oder den Wert auf die Festplatte schreiben, aber dies ist die einzige praktische Wahl in diesem Szenario.

+0

Das ist eine ziemlich schlechte Einschränkung. Was soll ich tun, wenn ich Funktionen zum Aufruf benötige, die Argumente erfordern? Löst OOP das? – ysj

+0

@ysj: Es ist keine Einschränkung, es ist nur wie Programmieren funktioniert. Damit eine Funktion einen Wert verwendet, der in einer anderen Funktion definiert ist, muss sie übergeben werden oder in einer Art gemeinsam genutztem Kontext vorliegen. Da Sie nach einer Funktion fragen, die als Reaktion auf ein Ereignis aufgerufen wird (anstatt sie direkt aufzurufen), müssen Sie sie so speichern, dass andere Funktionen darauf zugreifen können. Es ist eine etwas unveränderliche Tatsache bei der Programmierung, dass Sie keinen Wert verwenden können, wenn Sie ihn nicht sehen können. –

Verwandte Themen