import tkinter

def handlerAdaptor(fun,**kwds):
    return lambda event,fun=fun,kwds=kwds:fun(event,**kwds)
    
def handler(event):
    global A
    global B
    global fuhao
    flag = ("÷","X","-","+")
    if event.widget["text"] == "C":
        entry_txt.delete(0,30)
    if event.widget["text"] == "Del":
        txt_str = str(entry_txt.get())
        txt_str =txt_str[:len(txt_str)-1]
        entry_txt.delete(0,30)
        entry_txt.insert(30,txt_str)
    for i in range(0,10,1):
        if event.widget["text"] == str(i):
            entry_txt.insert(30,str(i))
    try:
        for sign in flag:
            if event.widget["text"] == sign:
                A = int(entry_txt.get())
                entry_txt.insert(30,sign)
                fuhao = sign
    except:
        pass
    if event.widget["text"] == "=":
        B = entry_txt.get()
        B = int(B[B.find(fuhao)+1:])
        entry_txt.delete(0,30)
        if (fuhao == "÷"):
            entry_txt.insert(30,str(A/B))
        if (fuhao == "X"):
            entry_txt.insert(30,str(A*B))
        if (fuhao == "-"):
            entry_txt.insert(30,str(A-B))
        if (fuhao == "+"):
            entry_txt.insert(30,str(A+B))
        
        
    
def init_frame_主容器生成(root_计算器主窗口):
    kuan = 6
    gao = 2
    global entry_txt
    entry_txt = tkinter.Entry(root_计算器主窗口,
                              highlightthickness = 1,
                              bd = 4,
                              bg = "white",
                              font = ("微软雅黑",40))
    entry_txt.place(x = 20,
                    y = 10,
                    width = 460,
                    height = 100)
    X = (20,140,260,380)
    Y = (130,250,370,490)
    Text = ("7","4","1","0","8","5","2","C","9","6","3","=","÷","X","-","+")
    Button = {}
    for i in range(4):
        for j in range(4):
#             exec ("")
            Button[4*i+j] = tkinter.Button(root_计算器主窗口,
                                           text = Text[4*i+j],
                                           width = kuan,
                                           height = gao,
                                           bg = "white",
                                           font = ("微软雅黑",40))
            Button[4*i+j].bind("<Button-1>",handlerAdaptor(handler))
            Button[4*i+j].place(x = X[i],
                                y = Y[j]+20,
                                width = 100,
                                height = 100)
    root_计算器主窗口.update()
    

#主程序创建窗口,并设置大小与标题
if __name__=="__main__":
    # 生成主窗口,用root_计算器主窗口表示,后面就在root_计算器主窗口操作
    root_计算器主窗口 = tkinter.Tk()
    # 设置窗口标题
    root_计算器主窗口.title("简易计算器")
    # 指定主框体大小
    root_计算器主窗口.geometry('500x640+400+100')
    # 不允许改变窗口大小
    root_计算器主窗口.resizable(False, False) #框体大小可调性,分别表示x,y方向的可变性,这里我们设置为不可调
    # 调用函数【init_frame_主容器生成】生成相关计算器组件
    init_frame_主容器生成(root_计算器主窗口)
    root_计算器主窗口.mainloop()
    

0 条评论

目前还没有评论...