I found 3 mistakes
- use
Toplevel()instead ofTk()to create second/third window command=expects callback – function name without()
(but you usepopupBonusWindow.destroy())- don’t mix
pack()andgrid()in one window or frame
(but you usegrid()andpack()in popup)
But you can also use built-in messageboxes like showinfo()
import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo
def popup_bonus():
win = tk.Toplevel()
win.wm_title("Window")
l = tk.Label(win, text="Input")
l.grid(row=0, column=0)
b = ttk.Button(win, text="Okay", command=win.destroy)
b.grid(row=1, column=0)
def popup_showinfo():
showinfo("Window", "Hello World!")
class Application(ttk.Frame):
def __init__(self, master):
ttk.Frame.__init__(self, master)
self.pack()
self.button_bonus = ttk.Button(self, text="Bonuses", command=popup_bonus)
self.button_bonus.pack()
self.button_showinfo = ttk.Button(self, text="Show Info", command=popup_showinfo)
self.button_showinfo.pack()
root = tk.Tk()
app = Application(root)
root.mainloop()
BTW: I put it on page: Tkinter: How to create popup Window or Messagebox