Tkinter αναπτυσσόμενο συνιστάται αποτελέσματα με αίτημα API πολύ αργή

ψήφοι
0

Μου γραμμή αναζήτησης είναι εξαιρετικά αναποτελεσματική, μπορώ να χρησιμοποιήσω ένα widget είσοδο TkInter και τη μέθοδο StringVar ίχνος για να καλέσετε μια συνάρτηση όταν ο χρήστης πληκτρολογήσει τίποτα.

Το πρόβλημα είναι η γραμμή αναζήτησης είναι πολύ αργή, όπως είναι κάνει μια κλήση API και η αναμονή για την απάντηση που μπορεί να πάρει κάποια 200ms και να διακόψει το χρήστη εισάγοντας το αίτημα αναζήτησης.

Υπάρχει κάποιος τρόπος να διαχωριστούν οι λειτουργίες, έτσι ώστε όταν ο χρήστης εισάγει ένα χαρακτήρα, για παράδειγμα ο επόμενος χαρακτήρας δεν καθυστερεί από τη λειτουργία αναμονής για τα στοιχεία που πρέπει να επιστραφεί;

Έχω δει μερικά παραδείγματα, αλλά δεν μπορεί να κάνει αρκετά το εφαρμοστέο με κωδικό μου, όπως το σπείρωμα.

Εδώ είναι το σχετικό τμήμα του κώδικα.

    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']
Δημοσιεύθηκε 08/11/2018 στις 00:05
πηγή χρήστη
Σε άλλες γλώσσες...                            

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