Tkinter Dropdown empfohlen Ergebnisse mit API-Anfrage sehr langsam

stimmen
0

Meine Suchleiste extrem ineffizient ist, verwende ich ein tkinter Eintrag Widget und die StringVar Trace Methode eine Funktion aufzurufen, wenn der Benutzer nichts.

Das Problem ist die Suchleiste ist sehr langsam, wie es einen API-Aufruf zu machen und auf die Antwort warten, die einige 200 ms dauern kann und der Benutzer unterbrechen die Suchanfrage eingeben.

Gibt es eine Möglichkeit, die Funktionen zu trennen, so dass, wenn der Benutzer ein Zeichen zum Beispiel gibt das nächste Zeichen durch die Funktion nicht verzögert wartet auf Daten zurückgegeben werden?

Ich habe einige Beispiele gesehen, aber ich kann nicht ganz die anwendbare mit meinem Code machen, wie Einfädeln.

Hier ist der relevante Teil des Codes.

    def searchfocus(self, event):
        self.searchInput = StringVar()
        self.searchInput.trace(w, lambda *args: self.searchlive(self.searchInput.get()))

        self.searchEntry = Entry(self.searchcanvas, bg=#f4f4f4, highlightthickness=0, bd=0,
                             font = Arial 16, fg='#434343', textvariable=self.searchInput)
        self.searchEntry.focus_set()


    def searchlive(self, livesearch):

        api_key=xxxxxxxxxxxx
        url_request = 'https://www.alphavantage.co/query?function=SYMBOL_SEARCH&keywords=%s&apikey='+api_key
        print(url_request % livesearch)
        r = requests.get(url_request % livesearch)
        data = r.json()

        retList = data['bestMatches']
Veröffentlicht am 08/11/2018 um 00:05
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more