用python实现计算器功能,如何用python设计一个计算器

  用python实现计算器功能,如何用python设计一个计算器

  本文主要介绍用Python制作简单计算器的功能。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  本文分享了Python制作简单计算器的具体代码,供大家参考。具体内容如下

  

简易计算器

  简易计算器功能:

  实现输入、计算和输出功能;可以计算基本的加减乘除函数;处理除法中除数不能为零的设计;处理输入不能为空的设计;记录历史计算并显示在右边的文本框中;与前两个项目不同的是,这个项目的布局是网格布局,windows的设计也差不多。然而,网格布局在实际执行中存在许多漏洞。

  

窗口

  实现最基本的窗口界面。

  将tkinter作为tk导入

  导入tkinter.messagebox

  Win=tk。Tk() #窗口名

  Win.title(简易计算器)

  Win.geometry(650x600) #这里的乘法是小x。

  win.mainloop()

  Geometry()设置窗口的大小,格式:高度x宽度起始x位置起始y位置,例如:“600x600 50 50”表示大小为600*600,起始位置坐标为(50,50)。

  

布局

  标题

  使用Label,您可以在标签上显示文本,使文本居中,并设置背景颜色、字体大小和标签大小。

  B=tk。Label(win,text= simple calculator ,justify=tk.center,height=2,width=50,font=(italics ,20),background= light cyan )# textbox name

  b.grid(row=0,columnspan=6)

  输入框

  Entry用于输入框A1和A2,Label label用于前面的名称。

  Justify表示文本的位置,或者输入文本的起始位置是从左侧还是右侧,

  和高度,代表宽度和高度。

  Font,包含楷体和字号,可以省略,有默认值。

  网格显示布局的位置,行号和列号。Row和column分别表示行和列,rowspan和columnspan表示在行和列的方向上所占的大小。

  通过输入框名称获取输入框的内容。获取()

  B1=tk.label (win,text= A: ,justify=tk.center,height=2,width=5,font=(italics ,15)) #文本框名称

  b1.grid(行=1,列=0)

  A1=tk.entry (win,justify=tk.left,width=15,font=(italics ,15)) #文本框创建

  a1.grid(行=1,列=1)

  B2=tk.label (win,text= b: ,justify=tk.center,height=2,width=5,font=(italics ,15)) #文本框名称

  b2.grid(行=2,列=0)

  A2=tk.entry (win,justify=tk.left,width=15,font=(italics ,15)) #文本框创建

  a2.grid(行=2,列=1)

  文本记录框

  记录历史计算的文本,通过insert插入拼接后的字符串数据,通过数字标记完成两列的换行操作。如果不设置文本框的大小,只设置所占的行数和列数,窗口就会变得大小不一,组件之间的空隙也大,不太美观。

  Txt=tk.text (win,height=20,width=40,font=(italics ,15)) #font指定输入文本的字体和大小。

  Txt.grid (row=1,column=4,rowspan=4,columnspan=4) #的大小是4*4。

  按钮功能

  当这两个数据输入后,我们会根据按钮点击的需求来计算数据,并弹出结果。实施功能:

  当损耗为空时,弹出窗口

  提示,并且保证可以再次输入数据等操作

  • 除法运算的特殊之处,除数不能为零,也需要在输入错误时进行提示
  • 当结果计算完成时,要完成算式的拼接,插入文本框中
  • 提示计算的结果
  • 清空输入框,等到下一次的计算输入
  • 判断历史计算的次数,为插入算式的位置进行改变。两列数据之间要进行间隔的设置。
  •   每一个按钮的设计方法相似,知识各有各的实现功能,大同小异,格式都相同,只是计算不一样。可以通过研究一个函数功能,类推其他几个。

      

    num=0     #用来记录历史计算次数

      def sum():

          if a1.get()== or a2.get()==:

              return tkinter.messagebox.showinfo(消息提示, 输入不能为空)

          global num

          num += 1

          a = float(a1.get())      #获取输入框内的内容,收集到的为字符型,需要进行转化

          b = float(a2.get())

          c = a + b

          s = str(%d%a + + +%d%b + = + %d%c)            #完成数据的拼接

          if num%2==0:

              s=s+ \n            #第偶数个算式后面加上空格进行间隔

              print(num)

          else:

              s=s+\t            #第奇数个算式进行换行处理

          txt.insert(tk.END,s)

          tkinter.messagebox.showinfo(消息提示, 求商结果是:%d%c)

          a1.delete(0, tk.END)            #清空输入框内的数据

          a2.delete(0, tk.END)

      def multiply():

          if a1.get()== or a2.get()==:

              return tkinter.messagebox.showinfo(消息提示, 输入不能为空)

          global num

          num += 1

          a = float(a1.get())

          b = float(a2.get())

          c = a * b

          s = str(%d % a + * + %d % b + = + %d % c)

          if num%2==0:

              s=s+ \n

              print(num)

          else:

              s=s+\t

          txt.insert(tk.END, s)

          tkinter.messagebox.showinfo(消息提示, 求积结果是:%d%c)

          a1.delete(0, tk.END)

          a2.delete(0, tk.END)

      def subtract():

          if a1.get()== or a2.get()==:

              return tkinter.messagebox.showinfo(消息提示, 输入不能为空)

          global num

          num += 1

          a = float(a1.get())

          b = float(a2.get())

          c = a - b

          s = str(%d % a + - + %d % b + = + %d % c)

          if num%2==0:

              s=s+ \n

              print(num)

          else:

              s=s+\t

          txt.insert(tk.END, s)

          tkinter.messagebox.showinfo(消息提示, 求差结果是:%d%c)

          a1.delete(0, tk.END)

          a2.delete(0, tk.END)

      def divide():

          if a1.get()== or a2.get()==:

              return tkinter.messagebox.showinfo(消息提示, 输入不能为空)

          global num

          num += 1

          a = float(a1.get())

          b = float(a2.get())

          if float(b)==0.0:

              tkinter.messagebox.showinfo(消息提示, 除数不能为零!!!)

              a2.delete(0 , tk.END)  # 当除数为0时,不能进行计算,并且需要弹窗提示,清空数据

          else:

              c = a / b

              s = str(%d % a + / + %d % b + = + %d % c)

              if num % 2 == 0:

                  s = s + \n

                  print(num)

              else:

                  s = s + \t

              txt.insert(tk.END, s)

              tkinter.messagebox.showinfo(消息提示, 求商结果是:%d%c)

              a1.delete(0, tk.END)

              a2.delete(0, tk.END)

      按钮

      这里有一个坑,刚开始我设计按钮的时候直接是:command = sum(),于是函数在我还没有点击按钮时就进行了一次计算,所以刚开始运行程序就提醒我输入不能为空。试了很多方法,才试到这个方法。在函数前面加上:lamba:。
    justify=tk.CENTER设计文字在按钮的中间

      

    a4 = tk.Button(win, text=求和,justify=tk.CENTER, width=10, font=(楷体, 15) ,command = lambda :sum() )  # 文本框创建

      a4.grid(row=3, column=0)

      a5 = tk.Button(win, text=求积, justify=tk.CENTER, width=10 , font=(楷体, 15), command = lambda :multiply())  # 文本框创建

      a5.grid(row=3, column=1)

      a6 = tk.Button(win, text=求差, justify=tk.CENTER, width=10, font=(楷体, 15), command = lambda :subtract()) # 文本框创建

      a6.grid(row=4, column=0)

      a7 = tk.Button(win, text=求商, justify=tk.CENTER, width=10, font=(楷体, 15), command = lambda :divide())  # 文本框创建

      a7.grid(row=4, column=1)

      

      附完整代码:

      

    import tkinter as tk

      import tkinter.messagebox

      win = tk.Tk()         #窗口名称

      win.title("简易计算器")

      win.geometry(650x600)  # 这里的乘是小x

      b=tk.Label(win, text=简易计算器,justify=tk.CENTER, height=2 , width=50 ,font=(楷体, 20),background=lightcyan)  # 文本框名字

      b.grid(row=0,columnspan=6)

      b1=tk.Label(win, text=a:,justify=tk.CENTER, height=2 , width=5 ,font=(楷体, 15))  # 文本框名字

      b1.grid(row=1,column=0)

      a1 = tk.Entry(win, justify=tk.LEFT, width=15 , font=(楷体, 15))  # 文本框创建

      a1.grid(row=1,column=1)

      b2 = tk.Label(win, text=b:,justify=tk.CENTER, height=2 , width=5 , font=(楷体, 15))  # 文本框名字

      b2.grid(row=2,column=0)

      a2 = tk.Entry(win, justify=tk.LEFT, width=15 , font=(楷体, 15) )  # 文本框创建

      a2.grid(row=2,column=1)

      txt = tk.Text(win,height=20, width=40 ,font=(楷体, 15))

      txt.grid(row=1,column=4,rowspan=4,columnspan=4)

      num=0

      def sum():

          if a1.get()== or a2.get()==:

              return tkinter.messagebox.showinfo(消息提示, 输入不能为空)

          global num

          num += 1

          a = float(a1.get())

          b = float(a2.get())

          c = a + b

          s = str(%d%a + + +%d%b + = + %d%c)

          if num%2==0:

              s=s+ \n

              print(num)

          else:

              s=s+\t

          txt.insert(tk.END,s)

          tkinter.messagebox.showinfo(消息提示, 求商结果是:%d%c)

          a1.delete(0, tk.END)

          a2.delete(0, tk.END)

      def multiply():

          if a1.get()== or a2.get()==:

              return tkinter.messagebox.showinfo(消息提示, 输入不能为空)

          global num

          num += 1

          a = float(a1.get())

          b = float(a2.get())

          c = a * b

          s = str(%d % a + * + %d % b + = + %d % c)

          if num%2==0:

              s=s+ \n

              print(num)

          else:

              s=s+\t

          txt.insert(tk.END, s)

          tkinter.messagebox.showinfo(消息提示, 求积结果是:%d%c)

          a1.delete(0, tk.END)

          a2.delete(0, tk.END)

      def subtract():

          if a1.get()== or a2.get()==:

              return tkinter.messagebox.showinfo(消息提示, 输入不能为空)

          global num

          num += 1

          a = float(a1.get())

          b = float(a2.get())

          c = a - b

          s = str(%d % a + - + %d % b + = + %d % c)

          if num%2==0:

              s=s+ \n

              print(num)

          else:

              s=s+\t

          txt.insert(tk.END, s)

          tkinter.messagebox.showinfo(消息提示, 求差结果是:%d%c)

          a1.delete(0, tk.END)

          a2.delete(0, tk.END)

      def divide():

          if a1.get()== or a2.get()==:

              return tkinter.messagebox.showinfo(消息提示, 输入不能为空)

          global num

          num += 1

          a = float(a1.get())

          b = float(a2.get())

          if float(b)==0.0:

              tkinter.messagebox.showinfo(消息提示, 除数不能为零!!!)

              a2.delete(0 , tk.END)  # 删除文本框内索引为0-999的字符

          else:

              c = a / b

              s = str(%d % a + / + %d % b + = + %d % c)

              if num % 2 == 0:

                  s = s + \n

                  print(num)

              else:

                  s = s + \t

              txt.insert(tk.END, s)

              tkinter.messagebox.showinfo(消息提示, 求商结果是:%d%c)

              a1.delete(0, tk.END)

              a2.delete(0, tk.END)

      a4 = tk.Button(win, text=求和,justify=tk.CENTER, width=10, font=(楷体, 15) ,command = lambda :sum() )  # 文本框创建

      a4.grid(row=3, column=0)

      a5 = tk.Button(win, text=求积, justify=tk.CENTER, width=10 , font=(楷体, 15), command = lambda :multiply())  # 文本框创建

      a5.grid(row=3, column=1)

      a6 = tk.Button(win, text=求差, justify=tk.CENTER, width=10, font=(楷体, 15), command = lambda :subtract()) # 文本框创建

      a6.grid(row=4, column=0)

      a7 = tk.Button(win, text=求商, justify=tk.CENTER, width=10, font=(楷体, 15), command = lambda :divide())  # 文本框创建

      a7.grid(row=4, column=1)

      win.mainloop()

      本篇博客只实现了较为简单的计算功能,当然也可以设计更多的功能,只需要加以研究,就可以完成。

      以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。

    郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

    留言与评论(共有 条评论)
       
    验证码: