import tkinter
import tkinter.messagebox
import sys
top=tkinter.Tk()
from tkinter import*
def clear():
e1.delete(0,END)
return
def seven():
v.set(v.get()+str("7"))
v.get()
def eight():
v.set(v.get()+str("8"))
v.get()
def nine():
v.set(v.get()+str("9"))
v.get()
def four():
v.set(v.get()+str("4"))
v.get()
def five():
v.set(v.get()+str("5"))
v.get()
def six():
v.set(v.get()+str("6"))
v.get()
def one():
v.set(v.get()+str("1"))
v.get()
def two():
v.set(v.get()+str("2"))
v.get()
def three():
v.set(v.get()+str("3"))
v.get()
def zero():
v.set(v.get()+str("0"))
v.get()
def add():
global op1
op1=v.get()
e1.delete(0,END)
def equals():
v.set(int(op1)+int(v.get()))
v.get()
top.title("D & R Calculator")
top.geometry("290x240")
from tkinter import*
frame=Frame(top)
frame.grid(column=0,row=0)
framenum=Frame(top,height=265)
framenum.grid()
v=StringVar()
from tkinter import*
e1=Entry(frame,width=30,textvariable=v)
e1.grid(row=0,column=0,sticky=W+E)
b7=tkinter.Button(framenum,text="7",height=3,width=9,command=seven)
b7.grid(row=0,column=1)
b8=tkinter.Button(framenum,text="8",height=3,width=9,command=eight)
b8.grid(row=0,column=2)
b9=tkinter.Button(framenum,text="9",height=3,width=9,command=nine)
b9.grid(row=0,column=3)
b4=tkinter.Button(framenum,text="4",height=3,width=9,command=four)
b4.grid(row=1,column=1)
b5=tkinter.Button(framenum,text="5",height=3,width=9,command=five)
b5.grid(row=1,column=2)
b6=tkinter.Button(framenum,text="6",height=3,width=9,command=six)
b6.grid(row=1,column=3)
b1=tkinter.Button(framenum,text="1",height=3,width=9,command=one)
b1.grid(row=2,column=1)
b2=tkinter.Button(framenum,text="2",height=3,width=9,command=two)
b2.grid(row=2,column=2)
b3=tkinter.Button(framenum,text="3",height=3,width=9,command=three)
b3.grid(row=2,column=3)
b0=tkinter.Button(framenum,text="0",height=3,width=9,command=zero)
b0.grid(row=3,column=2)
f1=tkinter.Button(framenum,text="+",height=3,width=9,command=add)
f1.grid(row=2,column=4)
f2=tkinter.Button(framenum,text="-",height=3,width=9)
f2.grid(row=1,column=4)
f3=tkinter.Button(framenum,text="X",height=3,width=9)
f3.grid(row=0,column=4)
f4=tkinter.Button(framenum,text="/",height=3,width=9)
f4.grid(row=3,column=4)
eq=tkinter.Button(framenum,text="=",height=3,width=9,command=equals)
eq.grid(row=3,column=3)
c=tkinter.Button(framenum,text="CE",height=3,width=9,command=clear)
c.grid(row=3,column=1)
top.mainloop
我挑战自己制作一个没有使用教程的tkinter计算器。我终于成功了,但有一个问题。它只能做一个功能。无论是加法,乘法,除法还是带走它都只能做一个操作。我想知道的是如何让计算器记住按下哪个按钮/哪个命令可以区分不同的功能。基本上,我需要帮助或指导使计算器执行所有操作,而不是仅仅执行一个操作并且必须手动去编辑它以使其执行另一个操作。帮助甚至只是推动正确的方向将是伟大的,我是Python的新手。
答案 0 :(得分:0)
好吧,你的代码有一些问题:
您在top.mainloop()
你有from tkinter import *
行的次数,这个
并不重要,但你只需要在顶部一次,并且可以
也取消了顶部的所有其他进口。
您需要在op1
函数中全球化equals
。
你还没有为除法,减法和乘法写函数
按钮,那他们怎么可以工作?当我尝试9 - 6并且命中等于我
得到NameError op1 is not defined
它试图等于但是
因为减法按钮还没有做任何事情。
这意味着你只能从添加按钮开始,所以我尝试5 + 4并点击等于 工作很好,给了我9,但是如果你尝试从结果中减去5,它会在文本框中加上5,当你达到等于时再加5。
当我尝试以前面提到的9 - 6开始时,它不会起作用。要解决这个问题与op1
与添加的关系,以及在equals
函数op1
中的使用方式,它只适用于您需要的adding
函数try/except
循环:
def equals():
try:
v.set(int(op1)+int(v.get()))
v.get()
del op1
except NameError:
try:
# Whatever needs to be written for subtraction to work
# (using op2 as variable?) something like this:
v.set(int(op2)-int(v.get()))
v.get()
del op2
except NameError:
try:
# etc. etc. until you have done all four equals methods...
其中op2
在减法函数等中设置。
如果您希望我可以为您修复计划,这应该会给您一些帮助以便继续,但前提是您不想自己做这个计划?