美文网首页python之路
GUI编程--简易计算器

GUI编程--简易计算器

作者: 非鱼2018 | 来源:发表于2020-01-08 21:25 被阅读0次

    实际demo如图:


    简易计算器.png

    主要用到了tkinter的gird布局,并对按钮实现了事件绑定,实现了简单的加减乘除,并接受键盘输入

    源码

    #encoding=utf-8
    #简易计算器
    import tkinter as tk
    from tkinter import messagebox
    
    class Application(tk.Frame):
        def __init__(self, master=None):
            super().__init__(master)
            self.master = master
            self.pack()
            self.create_widgets()
    
    
        def showtext(self,event):
            self.entry1.insert(tk.END, event.widget.cget('text'))
            if event.widget.cget('text')=='=':
                input=self.entry1.get()
                self.entry1.delete(0,tk.END)
                res=eval(input[:-1])
                self.entry1.insert(tk.END,res)
            if event.widget.cget('text')=='C':
                self.entry1.delete(0,tk.END)
            
        def show_key_add(self,event):
            self.entry1.insert(tk.END,'+')
    
        def key_add_equas(self,event):
            if event.keycode==13:
                input=self.entry1.get()
                self.entry1.delete(0,tk.END)
                res=eval(input)
                self.entry1.insert(tk.END,res)
            if event.keycode==43:
                self.entry1.insert(tk.END,"+")
            if event.keycode==61:
                input=self.entry1.get()
                self.entry1.delete(0,tk.END)
                res=eval(input)
                self.entry1.insert(tk.END,res)
    
    
        def showcolor(self,event):
            event.widget['bg']='yellow'
            
        def recovercolor(self,event):
            event.widget['bg']='white'
    
        def showkey(self,event):
            self.entry1.insert(tk.END,event.char)
    
        def clear(self,event):
            self.entry1.delete(0,tk.END)
    
        def create_widgets(self):
            menubar=tk.Menu(self)   
            menubar.add_command(label='查看')
            menubar.add_command(label='编辑')
            menubar.add_command(label='帮助')
            root.config(menu=menubar)
    
            self.entry1=tk.Entry(self)
            self.entry1.grid(row=0,column=0,columnspan=5)
            blntext=(('MC','MR','MS','M+','C'),
            (7,8,9,'/','%'), (4,5,6,'*','1/x'), (1,2,3,'-','='),(0,'.','+'))
            for rowindex,r in enumerate(blntext):
                for cindex,c in enumerate(r):
                    if c=='=':
                        self.btn1=tk.Button(self,width=2,text=c)
                        self.btn1.grid(row=rowindex+1,column=cindex,sticky='NSEW',rowspan=2,padx=1,pady=1)
                    elif c==0:
                        tk.Button(self,width=2,text=c,name=c).grid(row=rowindex+1,column=cindex,sticky='EW',columnspan=2,padx=1,pady=1)
                    elif c=='.' or c=='+':
                        tk.Button(self,width=2,text=c).grid(row=rowindex+1,column=cindex+1,sticky='EW',padx=1,pady=1)
                
                    else:
                        tk.Button(self,width=2,text=c).grid(row=rowindex+1,column=cindex,sticky='EW',padx=1,pady=1)
            
    
            self.btn1.bind_class('Button','<Button-1>',self.showtext)
            self.btn1.bind_class('Button','<Enter>',self.showcolor)
            self.btn1.bind_class('Button','<Leave>',self.recovercolor)
            for i in range(9):
                root.bind('<KeyPress-{}>'.format(i),self.showkey)
            root.bind('<BackSpace>',self.clear)
            
            root.bind('<Key>',func=self.key_add_equas)
                
          
    if __name__ == "__main__":
        root = tk.Tk()
        root.geometry('200x200')
        root.title('计算器')
        app = Application(master=root)   
        app.mainloop()
    
    
    

    相关文章

      网友评论

        本文标题:GUI编程--简易计算器

        本文链接:https://www.haomeiwen.com/subject/snitactx.html