Ваша ошибка в том, что вы вызываете menu.mainloop () перед созданием вашего buttoncc и дважды вызываете mainloop ().
лучше было бы создать окно Toplevel, подобное этому:
from tkinter import *
from tkinter import messagebox
import sys
class Cal:
def __init__(self, master, cal):
self.master = master
self.root = Toplevel(self.master)
self.root.title("Currency Converter")
self.root.geometry("400x400")
self.us=StringVar()
self.usd=Entry(self.root,textvariable=self.us)
self.usd.grid(row=3,column=1)
self.us.set("0")
self.rate=StringVar()
self.raten=Entry(self.root,textvariable=self.rate)
self.raten.grid(row=4,column=1)
self.rate.set("0")
self.buttona=Button(self.root,text="-->",command=self.convert1).grid(row=4,column=2,rowspan=2)
self.buttonb=Button(self.root,text="<--",command=self.convert2).grid(row=6,column=2,rowspan=2)
self.buttonc=Button(self.root,text="Quit",command=self.root.quit).grid(row=8,column=2)
self.china=StringVar()
self.china.set("0")
self.chn=Entry(self.root,textvariable=self.china)
self.chn.grid(row=3, column=2)
def convert1(self):
cal=float(self.rate.get())
u=eval(self.us.get())
c=cal*u
cc=round(c,4)
self.china.set(cc)
def convert2(self):
cal=float(self.rate.get())
s=eval(self.china.get())
ss=s/cal
sss=round(ss,2)
self.us.set(sss)
class My_Root(Frame):
def __init__(self, master):
self.master = master
Frame.__init__(self, self.master)
self.grid()
self.buttoncc=Button(self,text="Currency Converter",command=self.new_toplevel)
self.buttoncc.grid(row=0,column=0)
def new_toplevel(self):
self.myToplevel = Cal(self, 5)
if __name__ == "__main__":
root=Tk()
root.geometry("400x400")
root.title("UniCal 1.0")
app = My_Root(root)
root.mainloop()