没有错误...搜索功能仍无法正常工作

时间:2017-04-16 14:45:02

标签: python python-3.x

我制作了一个程序代码,用于显示可从主菜单访问的图片。在我的菜单中,有一个搜索选项,可以打开一个新窗口,您可以在其中搜索数据库(这是一个列表),如果输入的单词在列表中,它将激活一个功能。搜索功能显示在这部分代码中:

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

全部用Tkinter模块制作。我尝试使用函数的全局变量和参数,但没有错误。虽然没有错误,但该程序仍然无效。有人可以帮我解决问题吗?

1 个答案:

答案 0 :(得分:0)

所以,我通过使Entry全局并给出内部函数来解决问题,该函数将字符串与#34; event&#34;进行比较。论点。这是正确的代码:

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

虽然,当我退出程序时,它会显示我为字符串不匹配的情况创建的错误消息,并打开一个不应该发生的随机新空Tkinter窗口,因为虽然该程序正在运行它已通过关键字找到正确的我正在寻找并给了我正确的图片。此外,控制台上出现此错误(但不在Shell中):

命令名称无效&#34;。!toplevel。!button&#34;     执行时 &#34; $ w cget -relief&#34;     (程序&#34; tk :: ButtonDown&#34;第9行)     从内部调用 &#34; tk :: ButtonDown。!toplevel。!button&#34;     (绑定到事件的命令)