没有错误...搜索功能仍然不工作

2024-10-03 15:28:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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模块制成的。我尝试使用全局变量和函数参数,但没有出现错误。虽然没有错误,但程序仍然无法运行。有人能帮我解决这个问题吗?你知道吗


Tags: key代码程序config列表if菜单pack
1条回答
网友
1楼 · 发布于 2024-10-03 15:28:38

因此,我解决了这个问题,将条目设为全局的,并将比较字符串的内部函数设为“event”参数。以下是正确的代码:

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中没有)上也有此错误:

命令名“”无效。!顶级。!“按钮” 执行时 “$w cget-释放” (步骤“tk::ButtonDown”第9行) 从内部调用 “tk::按钮向下。”。!顶级。!“按钮” (命令绑定到事件)

相关问题 更多 >