Created
July 13, 2014 15:48
-
-
Save renyuanL/b71afbd445611f2703bb to your computer and use it in GitHub Desktop.
ryCalculator4_final.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
ryCalculator4_final.py | |
改自 myCalculator4_final.py | |
呂仁園, 2014/07/13 | |
''' | |
from math import * | |
from random import * | |
from tkinter import * | |
class 窗類(Tk): | |
def __init__(我, *x, **y): | |
Tk.__init__(我, *x, **y) | |
def 標題(我, *x, **y): | |
我.title(*x, **y) | |
def 主迴圈(我, *x, **y): | |
我.mainloop() | |
class 框類(Frame): | |
def __init__(我, *x, **y): | |
Frame.__init__(我,*x, **y) | |
def 格位(我,*x, **y): | |
我.grid(*x, **y) | |
class 鈕類(Button): | |
def __init__(我, *x, **y): | |
Button.__init__(我,*x, **y) | |
def 格位(我,*x, **y): | |
我.grid(*x, **y) | |
class 盒類(Entry): | |
def __init__(我, *x, **y): | |
Entry.__init__(我,*x, **y) | |
def 格位(我,*x, **y): | |
我.grid(*x, **y) | |
class 標類(Label): | |
def __init__(我, *x, **y): | |
Label.__init__(我,*x, **y) | |
def 格位(我,*x, **y): | |
我.grid(*x, **y) | |
class 文類(Text): | |
def __init__(我, *x, **y): | |
Text.__init__(我,*x, **y) | |
def 格位(我,*x, **y): | |
我.grid(*x, **y) | |
計數器=0 | |
def 點擊(鈕): | |
global 計數器 | |
if 鈕 == '計算': | |
try: | |
算式= 出入盒.get() | |
計算結果= eval(算式) | |
轉成文字= str(計算結果) | |
出入盒.insert(END, " 計算結果為: " + 轉成文字) | |
except: | |
出入盒.insert(END, " --> 輸入不合語法!") | |
elif 鈕 == "清除": | |
文.insert(END, '[%d:] %s\n'%(計數器, 出入盒.get())) | |
出入盒.delete(0, END) | |
計數器+=1 | |
else: | |
出入盒.insert(END, 鈕) | |
數字列表= [ str(x) for x in range(0,10)]+['.'] | |
邏輯列表= ['True', 'False', ' and ',' or ',' not '] | |
算符列表= [ | |
'(',')','+', '-','*', '/', '**', '//','%', | |
'sin(','cos(','tan(','pi','exp(','erf(', | |
'random()','randint(', | |
'==','<','<=','>','>=' | |
] | |
功能列表= ['計算','清除'] | |
列表群= [數字列表, 邏輯列表, 功能列表, 算符列表] | |
窗= 窗類() | |
窗.標題('仁園牌計算窗') | |
文= 文類(窗, bg= 'pink') | |
出入框= 框類(窗, bg= 'cyan') | |
文.格位( row= 0, column= 0, columnspan= len(列表群)) | |
出入框.格位(row= 1, column= 0, columnspan= len(列表群)) | |
col= 0 | |
for 列表 in 列表群: | |
框= 框類(窗) | |
框.格位(row= 2, column= col) | |
col+=1 | |
L= len(列表) | |
M= int(L**.5) | |
n= 0 | |
for 符 in 列表: | |
def 命令(x= 符): | |
點擊(x) | |
鈕= 鈕類(框, text= 符, width= 5, command= 命令) | |
r, c= n//M, n%M | |
n += 1 | |
鈕.格位(row= r,column= c) | |
標= 標類(出入框, bg="gray", text='出入框') | |
出入盒= 盒類(出入框, bg= "yellow") | |
標.格位( row=0, column=0) | |
出入盒.格位(row=1, column=0) | |
# | |
# 正式開跑! | |
# | |
窗.主迴圈() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment