Search code examples
python-3.xuser-interfacetkintermessagebox

How to deal with "AttributeError: '_tkinter.tkapp' object has no attribute 'messagebox'"?


I'm studying about 'tkinter' recently. Pycharm told me here is no 'messagebox', but 'messagebox.py' does exist in my 'tkinter'. Many ways I gained from Internet can't solve this. Please help me, I'll appreciate for that.

greet_button = Button(
    table,
    text = 'Yes',
    width = 20,
    height = 2,
    bg = 'yellow',
    fg = 'red',
    command = table.messagebox.showinfo(title='Hello', message='Hello!')
)

Solution

  • Some packages of tkinter need a extra import like ttk, ttkthemes or messagebox.

    import tkinter as tk
    from tkinter import messagebox
    
    root = tk.Tk()
    def err():
        tk.messagebox.showinfo(title='hello', message='hello')
    
    erro = tk.Button(root, text="Top", command=err)
    erro.pack()
    
    root.mainloop()
    

    As oneliner you would need an annonymus function:

    import tkinter as tk
    from tkinter import messagebox
    
    root = tk.Tk()
    
    erro = tk.Button(root, text="Top", command=lambda:tk.messagebox.showinfo(title='hello', message='hello'))
    erro.pack()
    
    root.mainloop()