python tkinter实现简单计算器

来源:互联网 发布:mac地址转pin码工具 编辑:程序博客网 时间:2024/04/27 14:48

功能分析

基础功能

  • 需要有显示区,可以使用label,text,entry
  • 显示按键0-9以及运算符
  • 鼠标点击按键时,按键的值或者运算结果能够在显示区显示
  • 能够清空显示区以备下一次运算输入

功能完善和增强

  • 如果使用能获取输入的显示区,需要对异常输入进行识别(如字母)
  • 界面能够缩放(最小化,最大化)

代码实现

from tkinter import *class Calculator(Frame):     def __init__(self):        Frame.__init__(self)        self.pack(expand=YES, fill=BOTH)        self.master.title('calculator')        self.master.rowconfigure( 0, weight = 1 )        self.master.columnconfigure( 0, weight = 1 )        self.grid( sticky = W+E+N+S )        display = StringVar()        #add entry ,use grid method        #textvariable must use 'display' instead of 'StrinvVar()', or click button shows nothing in Entry        entry = Entry(self, relief=SUNKEN, textvariable=display)        #W+E+N+S means that the widget should be expanded in both directions. Default is to center the widget in the cell.        entry.grid(row=0, column=0, columnspan=4, sticky=W+E+N+S)        #add button, use grid method        grid = '789+456-123*0./='        for index,textChar in enumerate(grid):            a = Button(self, text=textChar, width=5, command=lambda text=textChar:display.set(display.get() + text))            a.grid(row=1+index//4, column=index%4)            button_text = a.cget("text")            #print(button_text)            if button_text == '=':                a.config(command=lambda:display.set(eval(display.get())))        #add clear button        b = Button(self, text="clear", width=20, command=lambda:display.set(""))        b.grid(row=7, column=0, columnspan=4, sticky=W+E+N+S)if __name__ == '__main__':    Calculator().mainloop()

实现结果

  1. 界面显示
    这里写图片描述
  2. 加减乘除运算正常,clear功能正常
    这里写图片描述
    这里写图片描述

尚未实现

  1. 除法除数为0的异常处理
  2. 非数字输入的异常处理
  3. 按钮大小固定,需改为pack方式以满足缩放需求

参考资料

grid layout
change widget text
get widget text
get widget setting
entry widget
grid geometry
python gui模块

0 0
原创粉丝点击