python的GUI编程之实例-计算器

import tkinter as tk
from tkinter import ttk


class Application():

    def __init__(self, master):
        self.master = master
        self.initWidgets()
        self.status =False

    def initWidgets(self):
        self.input1 = tk.Entry(master=self.master, relief=tk.SUNKEN, font=('Courier New', 24), width=25, fg="blue")
        self.input1.pack(side=tk.TOP, pady=10)
        label = tk.Label(master=self.master, text="结果")
        label.pack(side=tk.TOP)
        self.input2 = tk.Entry(master=self.master, relief=tk.SUNKEN, font=('Courier New', 24), width=25, fg="blue")
        self.input2.pack(side=tk.TOP, pady=10)

        self.clear_button = tk.Button(master=self.master,text="清除", font=('Verdana', 20), width=25)
        self.clear_button.pack(side=tk.TOP, pady=10)
        self.clear_button.bind("<Button-1>",self.clear)

        p2 = tk.Frame(self.master)
        p2.pack(side=tk.TOP)
        names = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "*", "/", ".", "=")
        # 遍历字符串元组
        for i in range(len(names)):
            b = tk.Button(p2, text=names[i], font=('Verdana', 20), width=6)
            # print(i // 4, i % 4)
            b.grid(row=i // 4, column=i % 4)
            if b['text'] in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".","+", "-", "*", "/"):
                b.bind('<Button-1>', self.initNum)
            else :
                b.bind('<Button-1>', self.getResult)

    def initNum(self, event):

        if self.status:
            # 删除
            self.input1.delete(0, tk.END)
            text = self.absolute_result
            self.input1.insert(0, text)
            index = self.input1.index(tk.INSERT)
            self.input1.insert(index, event.widget['text'])
            self.status = False
        else:
            index = self.input1.index(tk.INSERT)
            text = event.widget['text']
            self.input1.insert(index, text)

    def getResult(self, event):
        tmp_result =""
        self.status = True
        self.input2.delete(0, tk.END)
        tmp_result += str(self.input1.get()).rstrip("+-*/")
        self.absolute_result = eval(tmp_result)
        self.input2.insert(tk.END, self.absolute_result)

    def clear(self, event):
        self.input1.delete(0, tk.END)
        self.input2.delete(0, tk.END)



root = tk.Tk()
root.title("Grid布局")
Application(root)
root.mainloop()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值