首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文本计算器

文本计算器

作者头像
超级大猪
发布2019-11-22 14:49:14
1.1K0
发布2019-11-22 14:49:14
举报
文章被收录于专栏:大猪的笔记大猪的笔记

直接上代码:

# coding:utf-8
from __future__ import division
import sys
from math import *
import logging as log
python_version = sys.version_info.major
if python_version == 3:
    import tkinter as tk
elif python_version == 2:
    import Tkinter as tk

class StrCalc(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent
        scroll_bar = tk.Scrollbar(root)
        text_box = tk.Text(root, height=4)
        scroll_bar.pack(side=tk.RIGHT, fill=tk.Y)
        text_box.pack(side=tk.LEFT, fill=tk.Y)
        scroll_bar.config(command=text_box.yview)
        text_box.config(yscrollcommand=scroll_bar.set)
        self.MainText = text_box
        parent.bind("<Return>",self.calc)
        self.MainText.pack()

    def calc(self,event):
        current_line = self.MainText.index(tk.INSERT)
        line_text = self.MainText.get("{}".format(float(current_line) - 1), "{}".format(float(current_line)))
        # messagebox.showinfo("Say Hello", line_text)
        if line_text.strip() == "clean":
            self.MainText.delete('1.0', tk.END)
            return
        result = StrCalc.calc_str(line_text)
        try:
            result = "{:.4f}".format(result)
        except:
            pass
        log.debug("calc result is %s" % result)
        self.MainText.insert("{}".format(float(current_line)), "%s\n" % result)

    @staticmethod
    def calc_str(input_str):
        try:
            if input_str.strip() == "":
                return ""
            result = eval(input_str)
            log.debug("calc_str result {}".format(result))
            return result
        except Exception as errors:
            return "".join((input_str, str(errors)))


if __name__ == "__main__":
    root=tk.Tk()
    root.attributes('-topmost', True)
    root.title(u"文本计算器-yinzihao")
    root.geometry("600x400")
    main = StrCalc(root)
    main.pack(sid="top", fill="both", expand=True)
    root.mainloop()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档