直接上代码:
# 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()