2017-04-16 2 views
-3

Ich habe einen Code für ein Programm erstellt, das Bilder anzeigt, die über das Hauptmenü zugänglich sind. In meinem Menü gibt es eine Suchoption, die ein neues Fenster öffnet, in dem Sie die Datenbank durchsuchen können (das ist eine Liste) und wenn die eingegebenen Wörter in der Liste sind, wird eine Funktion aktiviert. Die Suchfunktion wird in diesem Teil des Codes angezeigt:Kein Fehler ... Suchfunktion funktioniert immer noch nicht

def search(): 
    def compare(words): 
     key=words.get() 
     print(key) 
     for i in base: 
      if i==key: 
       if key=="apple": 
        AppleFunction() 

       if key=="pear": 
        PearFunction() 
       else: 
        messagebox.showerror("Eror!","Wrong entry, please correct!") 
     return 
    searchWindow=Toplevel(main) 
    searchWindow.geometry("425x125+225+145") 
    searchWindow.resizable(False,False) 
    searchWindow.config(bg=mycolor) 
    searchWindow.title("Search") 
    searchWindow.iconbitmap(r"f.ico") 

    words=Entry(searchWindow) 
    words.config(font="Times", width=20) 

    text1=Label(searchWindow, text="Search by key words:", wraplength=250, justify="center") 
    text1.pack(pady=5) 
    text1.config(bg=mycolor, font="Times") 
    words.pack(pady=5) 

    picture1=PhotoImage(file="ttt.gif") 
    searchButton=Button(searchWindow, image=picture1, height=19) 
    searchButton.config(bg=mycolor) 
    searchButton.bind("<Button>", compare(words)) 
    searchButton.pack(pady=5) 

    searchWindow.mainloop() 
    return 

Es ist alles mit Tkinter-Modul gemacht. Ich habe versucht mit globalen Variablen und Argumenten mit Funktionen, aber es gab keinen Fehler. Obwohl es keinen Fehler gibt, funktioniert das Programm immer noch nicht. Kann mir jemand helfen, das Problem zu lösen?

+0

Was * ist * das Problem? Was bedeutet * "nicht funktioniert" *? – jonrsharpe

+0

das ist eine schlechte Frage: Ihr Code ist unklar, Ihre Variablen sind in einer fremden Sprache benannt, die wahrscheinlich für Sie Sinn machen, aber machen es uns schwer, Ihnen zu helfen. Es ist unklar, was Sie versuchen und was nicht funktioniert. Beginnen Sie mit der Erstellung eines minimalen Arbeitsbeispiels. Wenn Sie in Ihrem minimalen Beispiel einen Fehler erhalten, geben Sie sowohl den Code des minimalen Beispiels als auch den Fehler ein. Wenn Sie in Ihrem Beispiel keinen Fehler erhalten, finden Sie in Ihrem echten Code, was Sie anders gemacht haben. https://en.wikipedia.org/wiki/Minimal_Working_Example – polo

+0

@polo Beachten Sie, dass '[mcve]' in einem Kommentar zu: [mcve] erweitert wird. – jonrsharpe

Antwort

0

Also löste ich das Problem, indem ich den Entry global machte und der inneren Funktion, die die Strings vergleicht, das Argument "event" gab. Hier ist der richtige Code:

def search(): 
    def compare(event): 
     key=str(words.get()) 
     for i in base: 
      if i==key: 
       if key=="Apple": 
        AppleFunction() 

       elif key=="Pear": 
        PearFunction() 
     else: 
      messagebox.showerror("Error!","Wrong entry, please correct!") 
     return 
    searchWindow=Toplevel(main) 
    searchWindow.geometry("425x125+225+145") 
    searchWindow.resizable(False,False) 
    searchWindow.config(bg=mycolor) 
    searchWindow.title("Tražilica") 
    searchWindow.iconbitmap(r"f.ico") 

    text1=Label(searchWindow, text="Search by key words:", wraplength=250, justify="center") 
    text1.pack(pady=5) 
    text1.config(bg=mycolor, font="Times") 

    global words 
    words=Entry(searchWindow) 
    words.config(font="Times", width=20) 
    words.pack(pady=5) 

    picture1=PhotoImage(file="ttt.gif") 
    searchButtton=Button(searchWindow, image=picture1, height=19) 
    searchButtton.config(bg=mycolor) 
    searchButtton.bind("<Button>", trazi) 
    searchButttonb.pack(pady=5) 

    searchWindow.mainloop() 
    return 

Obwohl, wenn ich das Programm beenden, es zeigt mir die Fehlermeldung, die ich für einen Fall erstellt, wenn die Zeichenfolge nicht überein und öffnet ein zufälliges neues leeres Tkinter Fenster, das shouldn Es passiert nicht, denn während das Programm lief, hat es durch Schlüsselwörter richtig gefunden, was ich gesucht habe und gab mir das richtige Bild. Es gab auch diesen Fehler auf der Konsole (aber nicht in Shell):

ungültigen Befehl name "!.! Toplevel-Taste" während "$ w cget -relief" (Verfahren „tk Ausführung :: Button "Linie 9) aufgerufen aus "tk :: button~~POS=TRUNC.! Toplevel.! Button" (Befehl Ereignis gebunden)

Verwandte Themen