- 编程
python-计算器项目
- 2023-12-17 17:24:37 @
import tkinter
def handlerAdaptor(fun,**kwds):
return lambda event,fun=fun,kwds=kwds:fun(event,**kwds)
def handler(event):
global A
global B
global fuhao
flag = ("÷","X","-","+")
if event.widget["text"] == "C":
entry_txt.delete(0,30)
if event.widget["text"] == "Del":
txt_str = str(entry_txt.get())
txt_str =txt_str[:len(txt_str)-1]
entry_txt.delete(0,30)
entry_txt.insert(30,txt_str)
for i in range(0,10,1):
if event.widget["text"] == str(i):
entry_txt.insert(30,str(i))
try:
for sign in flag:
if event.widget["text"] == sign:
A = int(entry_txt.get())
entry_txt.insert(30,sign)
fuhao = sign
except:
pass
if event.widget["text"] == "=":
B = entry_txt.get()
B = int(B[B.find(fuhao)+1:])
entry_txt.delete(0,30)
if (fuhao == "÷"):
entry_txt.insert(30,str(A/B))
if (fuhao == "X"):
entry_txt.insert(30,str(A*B))
if (fuhao == "-"):
entry_txt.insert(30,str(A-B))
if (fuhao == "+"):
entry_txt.insert(30,str(A+B))
def init_frame_主容器生成(root_计算器主窗口):
kuan = 6
gao = 2
global entry_txt
entry_txt = tkinter.Entry(root_计算器主窗口,
highlightthickness = 1,
bd = 4,
bg = "white",
font = ("微软雅黑",40))
entry_txt.place(x = 20,
y = 10,
width = 460,
height = 100)
X = (20,140,260,380)
Y = (130,250,370,490)
Text = ("7","4","1","0","8","5","2","C","9","6","3","=","÷","X","-","+")
Button = {}
for i in range(4):
for j in range(4):
# exec ("")
Button[4*i+j] = tkinter.Button(root_计算器主窗口,
text = Text[4*i+j],
width = kuan,
height = gao,
bg = "white",
font = ("微软雅黑",40))
Button[4*i+j].bind("<Button-1>",handlerAdaptor(handler))
Button[4*i+j].place(x = X[i],
y = Y[j]+20,
width = 100,
height = 100)
root_计算器主窗口.update()
#主程序创建窗口,并设置大小与标题
if __name__=="__main__":
# 生成主窗口,用root_计算器主窗口表示,后面就在root_计算器主窗口操作
root_计算器主窗口 = tkinter.Tk()
# 设置窗口标题
root_计算器主窗口.title("简易计算器")
# 指定主框体大小
root_计算器主窗口.geometry('500x640+400+100')
# 不允许改变窗口大小
root_计算器主窗口.resizable(False, False) #框体大小可调性,分别表示x,y方向的可变性,这里我们设置为不可调
# 调用函数【init_frame_主容器生成】生成相关计算器组件
init_frame_主容器生成(root_计算器主窗口)
root_计算器主窗口.mainloop()
0 条评论
目前还没有评论...