Python简约计算器

 Python使用tkinter模块编写简易计算器

import tkinter as tk


class GUI:
    def __init__(self) -> None:
        self.root = tk.Tk()
        self.root.title("计算器")
        self.root.geometry("264x285")
        self.interface()

    def interface(self):
        self.output = tk.Entry(self.root, width=34)
        self.output.grid(row=0, column=0, rowspan=1, columnspan=4, padx=10, pady=10)
        tk.Button(
            self.root,
            text="C",
            width=8,
            height=2,
            foreground="Blue",
            command=self.clear_all,
        ).grid(row=1, column=0, sticky="e")
        tk.Button(
            self.root, text="DEL", width=8, height=2, command=self.clear_single
        ).grid(row=1, column=1, sticky="e")
        tk.Button(
            self.root, text="BCK", width=8, height=2, command=self.clear_single
        ).grid(row=1, column=2, sticky="e")
        tk.Button(
            self.root,
            text="/",
            width=8,
            height=2,
            command=lambda: self.output.insert("end", "/"),
        ).grid(row=1, column=3, sticky="e")

        self.btn_box = [0]
        for i in range(1, 10):
            self.btn_box.append(
                tk.Button(
                    self.root,
                    text=str(i),
                    width=8,
                    height=2,
                    command=lambda num=i: self.output.insert("end", num),
                )
            )
        tmp = 2
        for i in range(9, 0, -1):
            self.btn_box[i].grid(row=tmp, column=(i + 2) % 3, sticky="w")
            if (i + 2) % 3 == 0:
                tmp += 1
        tk.Button(
            self.root,
            text="*",
            width=8,
            height=2,
            command=lambda: self.output.insert("end", "*"),
        ).grid(row=2, column=3, sticky="e")
        tk.Button(
            self.root,
            text="-",
            width=8,
            height=2,
            command=lambda: self.output.insert("end", "-"),
        ).grid(row=3, column=3, sticky="w")
        tk.Button(
            self.root,
            text="+",
            width=8,
            height=2,
            command=lambda: self.output.insert("end", "+"),
        ).grid(row=4, column=3, sticky="w")
        tk.Button(
            self.root,
            text="0",
            width=8,
            height=2,
            command=lambda: self.output.insert("end", "0"),
        ).grid(row=5, column=0)
        tk.Button(
            self.root,
            text=".",
            width=8,
            height=2,
            command=lambda: self.output.insert("end", "."),
        ).grid(row=5, column=1)

        tk.Button(
            self.root, text="=", width=17, height=2, command=self.output_result
        ).grid(row=5, column=2, columnspan=2)

    def clear_all(self):
        self.output.delete(0, "end")

    def clear_single(self):
        tmp = self.output.get()
        self.clear_all()
        self.output.insert(0, tmp[0:-1])

    def output_result(self):
        tmp = self.output.get()
        self.clear_all()
        try:
            self.output.insert(0, eval(tmp))
        except Exception:
            self.output.insert(0, "Error")


if __name__ == "__main__":
    a = GUI()
    a.root.mainloop()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值