Python使用tkinter模块实现一个简单的计算器的GUI操作

学习tkinter之余,实现了一个简单的计算器操作,能够满足页面输入参数和计算得到结果
下面是结果展示和源码记录:
在这里插入图片描述
在这里插入图片描述
源码如下:

import tkinter as tk
from tkinter import ttk
from tkinter import messagebox


class Windows(tk.Frame):
    def __init__(self, root):
        self.root = root  # 窗口的变量
        self.root.geometry("300x200")  # 初始化窗口的大小
        self.root.title("WIN")  # 初始化窗口的名称
        self.frame1 = tk.Frame()
        self.frame2 = tk.Frame()
        self.operate = tk.Frame()

        self.lable_str = tk.StringVar(None, "6666")  # 给标签一个初始值
        self.num1 = tk.StringVar(None, "")
        self.num2 = tk.StringVar(None, "")
        self.operate_str = tk.StringVar(None, "+") # 操作符号
        # self.operate = tk.StringVar(None, "")

        self.lable_num1()  # 显示lable标签
        self.lable_num2()  # 显示lable标签
        self.lable_operate()
        self.button_()  # 显示button标签

    # 图标的操作
    def lable_num1(self):
        tk.Label(self.frame1, text="输入第1个数字").grid(row=0, column=0)
        tk.Entry(self.frame1, textvariable=self.num1).grid(row=0, column=1)
        self.frame1.grid()

    def lable_num2(self):
        tk.Label(self.frame2, text="输入第2个数字").grid(row=1, column=0)
        tk.Entry(self.frame2, textvariable=self.num2).grid(row=1, column=1)
        self.frame2.grid()

    def button_(self):
        tk.Button(self.root, text="输出结果", command=self.button_operate, width=6,
                  heigh=2).grid()

    def lable_operate(self):
        tk.Label(self.operate, text="运算符").grid(row=3, column=0)
        self.selector = ttk.Combobox(self.operate, values=["+", "-", "*", "/", "//"])  # 增加默认的值的操作
        self.selector.grid(row=3, column=1)
        self.selector.current(0)  # 选择一个作为默认值
        self.selector.bind("<<ComboboxSelected>>", self.selectlistenor)  # 绑定一个事件,能够获取一个操作过程的信息
        self.operate.grid()

    def selectlistenor(self, *args):
        print("当前的运算符号为:%s" % self.selector.get())
        self.operate_str.set(self.selector.get())  # 将页面获取到的值赋给操作变量

    # 实现的后台的操作
    def button_operate(self):
        num1 = int(self.num1.get())
        num2 = int(self.num2.get())
        operate = self.operate_str.get()
        result = 0
        print(num1)
        print(num2)
        if (0 == num1) and ("/" == operate or "//" == operate):
            messagebox.showwarning("被除数不能为0")
            return
        if operate == "+":
            result = num1 + num2
        if operate == "-":
            result = num1 - num2
        if operate == "*":
            result = num1 * num2
        if operate == "/":
            result = num1 / num2
        if operate == "//":
            result = num1 / num2

        if num1 is None or num2 is None:
            messagebox.showerror("\n提示:请输入要计算的数据")
            return
        messagebox.showinfo("%s" % (result))


if __name__ == '__main__':
    root = tk.Tk()  # 初始化一个窗口
    Windows(root=root)
    root.mainloop()

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值