Initial commit with README
This commit is contained in:
BIN
sys/lib/calc/ICO.png
Normal file
BIN
sys/lib/calc/ICO.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 261 B |
123
sys/lib/calc/__init__.mia
Normal file
123
sys/lib/calc/__init__.mia
Normal file
@@ -0,0 +1,123 @@
|
||||
import tkinter as tk
|
||||
try:
|
||||
#绝对会报错,只是用于高亮提示,可以删除,真正的导入部分在Kernel
|
||||
import sys.kernel.UI as UI
|
||||
from sys.kernel.tools import *
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
# 定义主窗口
|
||||
root = UI.Window()
|
||||
root.TitleText.config(text="计算器")
|
||||
root.geometry("250x360")
|
||||
root.resizable(False, False)
|
||||
|
||||
# 修改窗口标题的图片
|
||||
notepad_photo = ImageTk.PhotoImage(Image.open(app_info["path"]+"ICO.png").resize([12,16]))
|
||||
root.TitleICO.config(image=notepad_photo)
|
||||
root.TaskICO.config(image=notepad_photo)
|
||||
root.TaskICO.update()
|
||||
|
||||
def Button_main(text,bg='#D4F1F4',width=3):
|
||||
return tk.Button(root, text=text, font=("Arial", 14), width=width, height=1, bd=4, bg=bg,command=lambda :yunsuan(text),overrelief='sunken',activebackground="light yellow")
|
||||
|
||||
|
||||
c = tk.Canvas(root, width=250, height=340)
|
||||
c.yunsuan = ''
|
||||
c.color = 'black'
|
||||
|
||||
|
||||
def update():
|
||||
c.create_rectangle(0, 0, 250, 340, fill='light gray', outline=None)
|
||||
c.create_rectangle(20, 20, 230, 70, width=2, fill='white',outline='black')
|
||||
if c.yunsuan == 'ERROR':
|
||||
c.color = 'tomato'
|
||||
else:
|
||||
c.color = 'black'
|
||||
c.create_text(225,70, text=c.yunsuan,font=('arial',30),fill = c.color,anchor='se')
|
||||
c.create_rectangle(0,19,18,70,fill='light gray',outline='light gray')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def yunsuan(num):
|
||||
num = str(num)
|
||||
if c.yunsuan == 'ERROR' and num != 'CE':
|
||||
print('Debug:ERROR状态下无法运算')
|
||||
return
|
||||
|
||||
|
||||
if num in '0123456789+-*/.':
|
||||
if c.yunsuan == 0 or c.yunsuan =='0':
|
||||
c.yunsuan = num
|
||||
else:
|
||||
c.yunsuan += num
|
||||
elif num == '←':
|
||||
c.yunsuan = ''.join(list(c.yunsuan)[0:-1])
|
||||
elif num == 'CE':
|
||||
c.yunsuan = '0'
|
||||
elif num == '=':
|
||||
try:
|
||||
c.yunsuan = str(eval(c.yunsuan))
|
||||
except:
|
||||
c.yunsuan = 'ERROR'
|
||||
finally:
|
||||
print('Debug:try语句资源释放成功')
|
||||
print('Deubg:显示框内容',c.yunsuan)
|
||||
update()
|
||||
|
||||
# 定义数字按钮
|
||||
btn_1 = Button_main('1')
|
||||
btn_2 = Button_main('2')
|
||||
btn_3 = Button_main('3')
|
||||
btn_4 = Button_main('4')
|
||||
btn_5 = Button_main('5')
|
||||
btn_6 = Button_main('6')
|
||||
btn_7 = Button_main('7')
|
||||
btn_8 = Button_main('8')
|
||||
btn_9 = Button_main('9')
|
||||
btn_0 = Button_main('0',width=9)
|
||||
btn_point = Button_main('.')
|
||||
|
||||
|
||||
# 定义操作符按钮
|
||||
btn_add = Button_main('+')
|
||||
btn_sub = Button_main('-')
|
||||
btn_mul = Button_main('*')
|
||||
btn_div = Button_main('/')
|
||||
btn_eq = Button_main('=',width=8)
|
||||
btn_ce = Button_main(text='CE',bg='#F7AF9D')
|
||||
btn_back = Button_main(text='←')
|
||||
|
||||
|
||||
btn_1.place(x=10, y=100)
|
||||
btn_2.place(x=70, y=100)
|
||||
btn_3.place(x=130, y=100)
|
||||
btn_4.place(x=10, y=150)
|
||||
btn_5.place(x=70, y=150)
|
||||
btn_6.place(x=130, y=150)
|
||||
btn_7.place(x=10, y=200)
|
||||
btn_8.place(x=70, y=200)
|
||||
btn_9.place(x=130, y=200)
|
||||
btn_0.place(x=10, y=250)
|
||||
btn_point.place(x=70, y=300)
|
||||
|
||||
|
||||
|
||||
btn_add.place(x=190, y=100)
|
||||
btn_sub.place(x=190, y=150)
|
||||
btn_mul.place(x=190, y=200)
|
||||
btn_div.place(x=190, y=250)
|
||||
btn_eq.place(x=130, y=300)
|
||||
btn_ce.place(x=10, y=300)
|
||||
btn_back.place(x=130,y=250)
|
||||
|
||||
c.pack()
|
||||
# 运行主循环
|
||||
|
||||
update()
|
||||
root.mainloop()
|
||||
Reference in New Issue
Block a user