
import tkinter
from tkinter import *
from tkinter import messagebox
def main():
root = Tk() # 创建GUI主程序
calculator = Label(root) # 创建主窗口
calculator.pack(fill=BOTH, expand = 1)
addWidgets(calculator) # 调用函数,向窗口上添加功能按钮,以输入数字和运算符
root.title('Calculator')
root.wm_resizable(width = False, height = False) # 禁用窗口缩放
root.mainloop()
def addWidgets(frame):
expression = Text(frame, height = 2, width = 28) # 创建表达式输入窗口
number_1 = Button(frame, text='1', width = 5, command = lambda: input_char('1', expression)) # 创建数字按钮
number_2 = Button(frame, text='2', width = 5, command = lambda: input_char('2', expression))
number_3 = Button(frame, text='3', width = 5, command = lambda: input_char('3', expression))
number_4 = Button(frame, text='4', width = 5, command = lambda: input_char('4', expression))
number_5 = Button(frame, text='5', width = 5, command = lambda: input_char('5', expression))
number_6 = Button(frame, text='6', width = 5, command = lambda: input_char('6', expression))
number_7 = Button(frame, text='7', width = 5, command = lambda: input_char('7', expression))
number_8 = Button(frame, text='8', width = 5, command = lambda: input_char('8', expression))
number_9 = Button(frame, text='9', width = 5, command = lambda: input_char('9', expression))
number_0 = Button(frame, text='0', width = 5, command = lambda: input_char('0', expression))
btn_jia = Button(frame, text = '+', width = 5,command = lambda: input_char('+', expression)) # 创建运算符输入按钮
btn_jian = Button(frame, text = '-', width = 5,command = lambda: input_char('-', expression))
btn_cheng = Button(frame, text = '*', width = 5,command = lambda: input_char('*', expression))
btn_chu = Button(frame, text = '/', width = 5,command = lambda: input_char('/', expression))
btn_dengyu = Button(frame, text = '=', width = 19,command = lambda: input_char('=', expression))
btn_kuohao_1 = Button(frame, text = '(', width = 5,command = lambda: input_char('(', expression))
btn_kuohao_2 = Button(frame, text = ')', width = 5,command = lambda: input_char(')', expression))
btn_allclear = Button(frame, text = 'AC', width = 5,command = lambda: addWidgets(frame))
expression.grid_configure(column = 1, row = 2, columnspan = 4, rowspan = 1) # 使用grid_configure函数将组件添加到主窗口上
number_1.grid_configure(column = 1, row = 4, columnspan = 1, rowspan = 1)
number_2.grid_configure(column = 2, row = 4, columnspan = 1, rowspan = 1)
number_3.grid_configure(column = 3, row = 4, columnspan = 1, rowspan = 1)
number_4.grid_configure(column = 1, row = 5, columnspan = 1, rowspan = 1)
number_5.grid_configure(column = 2, row = 5, columnspan = 1, rowspan = 1)
number_6.grid_configure(column = 3, row = 5, columnspan = 1, rowspan = 1)
number_7.grid_configure(column = 1, row = 6, columnspan = 1, rowspan = 1)
number_8.grid_configure(column = 2, row = 6, columnspan = 1, rowspan = 1)
number_9.grid_configure(column = 3, row = 6, columnspan = 1, rowspan = 1)
number_0.grid_configure(column = 1, row = 7, columnspan = 1, rowspan = 1)
btn_jia.grid_configure(column = 4, row = 3, columnspan = 1, rowspan = 1)
btn_jian.grid_configure(column = 4, row = 4, columnspan = 1, rowspan = 1)
btn_cheng.grid_configure(column = 4, row = 5, columnspan = 1, rowspan = 1)
btn_chu.grid_configure(column = 4, row = 6, columnspan = 1, rowspan = 1)
btn_dengyu.grid_configure(column = 2, row = 7, columnspan = 3, rowspan = 1)
btn_kuohao_1.grid_configure(column = 1, row = 3, columnspan = 1, rowspan = 1)
btn_kuohao_2.grid_configure(column = 2, row = 3, columnspan = 1, rowspan = 1)
btn_allclear.grid_configure(column = 3, row = 3, columnspan = 1, rowspan = 1)
def input_char(char, expressionview): # 输入按钮对应的字符
if char == "=":
expressionview.insert('1.end', calcu(expressionview))
else:
expressionview.insert('1.end', char)
from tkinter import *
from tkinter import messagebox
def main():
root = Tk() # 创建GUI主程序
calculator = Label(root) # 创建主窗口
calculator.pack(fill=BOTH, expand = 1)
addWidgets(calculator) # 调用函数,向窗口上添加功能按钮,以输入数字和运算符
root.title('Calculator')
root.wm_resizable(width = False, height = False) # 禁用窗口缩放
root.mainloop()
def addWidgets(frame):
expression = Text(frame, height = 2, width = 28) # 创建表达式输入窗口
number_1 = Button(frame, text='1', width = 5, command = lambda: input_char('1', expression)) # 创建数字按钮
number_2 = Button(frame, text='2', width = 5, command = lambda: input_char('2', expression))
number_3 = Button(frame, text='3', width = 5, command = lambda: input_char('3', expression))
number_4 = Button(frame, text='4', width = 5, command = lambda: input_char('4', expression))
number_5 = Button(frame, text='5', width = 5, command = lambda: input_char('5', expression))
number_6 = Button(frame, text='6', width = 5, command = lambda: input_char('6', expression))
number_7 = Button(frame, text='7', width = 5, command = lambda: input_char('7', expression))
number_8 = Button(frame, text='8', width = 5, command = lambda: input_char('8', expression))
number_9 = Button(frame, text='9', width = 5, command = lambda: input_char('9', expression))
number_0 = Button(frame, text='0', width = 5, command = lambda: input_char('0', expression))
btn_jia = Button(frame, text = '+', width = 5,command = lambda: input_char('+', expression)) # 创建运算符输入按钮
btn_jian = Button(frame, text = '-', width = 5,command = lambda: input_char('-', expression))
btn_cheng = Button(frame, text = '*', width = 5,command = lambda: input_char('*', expression))
btn_chu = Button(frame, text = '/', width = 5,command = lambda: input_char('/', expression))
btn_dengyu = Button(frame, text = '=', width = 19,command = lambda: input_char('=', expression))
btn_kuohao_1 = Button(frame, text = '(', width = 5,command = lambda: input_char('(', expression))
btn_kuohao_2 = Button(frame, text = ')', width = 5,command = lambda: input_char(')', expression))
btn_allclear = Button(frame, text = 'AC', width = 5,command = lambda: addWidgets(frame))
expression.grid_configure(column = 1, row = 2, columnspan = 4, rowspan = 1) # 使用grid_configure函数将组件添加到主窗口上
number_1.grid_configure(column = 1, row = 4, columnspan = 1, rowspan = 1)
number_2.grid_configure(column = 2, row = 4, columnspan = 1, rowspan = 1)
number_3.grid_configure(column = 3, row = 4, columnspan = 1, rowspan = 1)
number_4.grid_configure(column = 1, row = 5, columnspan = 1, rowspan = 1)
number_5.grid_configure(column = 2, row = 5, columnspan = 1, rowspan = 1)
number_6.grid_configure(column = 3, row = 5, columnspan = 1, rowspan = 1)
number_7.grid_configure(column = 1, row = 6, columnspan = 1, rowspan = 1)
number_8.grid_configure(column = 2, row = 6, columnspan = 1, rowspan = 1)
number_9.grid_configure(column = 3, row = 6, columnspan = 1, rowspan = 1)
number_0.grid_configure(column = 1, row = 7, columnspan = 1, rowspan = 1)
btn_jia.grid_configure(column = 4, row = 3, columnspan = 1, rowspan = 1)
btn_jian.grid_configure(column = 4, row = 4, columnspan = 1, rowspan = 1)
btn_cheng.grid_configure(column = 4, row = 5, columnspan = 1, rowspan = 1)
btn_chu.grid_configure(column = 4, row = 6, columnspan = 1, rowspan = 1)
btn_dengyu.grid_configure(column = 2, row = 7, columnspan = 3, rowspan = 1)
btn_kuohao_1.grid_configure(column = 1, row = 3, columnspan = 1, rowspan = 1)
btn_kuohao_2.grid_configure(column = 2, row = 3, columnspan = 1, rowspan = 1)
btn_allclear.grid_configure(column = 3, row = 3, columnspan = 1, rowspan = 1)
def input_char(char, expressionview): # 输入按钮对应的字符
if char == "=":
expressionview.insert('1.end', calcu(expressionview))
else:
expressionview.insert('1.end', char)
