Python 为什么我简单的tkinter计算器给我的结果毫无意义?
我决定学习Python 为什么我简单的tkinter计算器给我的结果毫无意义?,python,python-3.x,tkinter,math,Python,Python 3.x,Tkinter,Math,我决定学习tkinter是一件好事,但当我试图制作一个简单的计算器时,我的+按钮并没有完成我想让它做的事情 我做错了什么 from tkinter import * font = ('Comic sans', 50) # Haha funny fNum = 0 global firstNumber firstNumber=0 secondNumber = 0 root = Tk() # Window information root.title("Calculator ☺&quo
tkinter
是一件好事,但当我试图制作一个简单的计算器时,我的+
按钮并没有完成我想让它做的事情
我做错了什么
from tkinter import *
font = ('Comic sans', 50) # Haha funny
fNum = 0
global firstNumber
firstNumber=0
secondNumber = 0
root = Tk()
# Window information
root.title("Calculator ☺")
# Display
e = Entry(root, width=6, borderwidth=5, font=font)
# Defs and shit
def Click(number):
current = e.get()
e.delete(0, END)
e.insert(0, str(current) + str(number))
def Plus():
firstNumber = e.get()
global fNum
global math
math = 'addition'
fNum = int(fNum) + int(firstNumber)
e.insert(0, fNum)
e.delete(0, END)
def Minus():
firstNumber = e.get()
global fNum
global math
math = 'subtraction'
fNum = int(fNum) - int(firstNumber)
e.insert(0, fNum)
e.delete(0, END)
def Times():
firstNumber = e.get()
global fNum
global math
math = 'multiplication'
fNum = int(fNum) * int(firstNumber)
e.insert(0, fNum)
e.delete(0, END)
def Over():
firstNumber = e.get()
global fNum
global math
math = 'division'
fNum = int(fNum) / int(firstNumber)
e.insert(0, fNum)
e.delete(0, END)
def Equal():
secondNumber = e.get()
e.delete(0, END)
if math == 'addition':
e.insert(0, fNum + int(secondNumber))
elif math == 'subtraction':
e.insert(0, fNum - int(secondNumber))
elif math == 'multiplication':
e.insert(0, fNum * int(secondNumber))
elif math == 'division':
e.insert(0, fNum / int(secondNumber))
def Clear():
global fNum
global firstNumber
global current
global secondnumber
global fNum
firstNumber = 0
current = 0
secondnumber = 0
e.delete(0, END)
# Buttons
button1 = Button(root, text='1', padx=35, pady=35, command=lambda: Click(1))
button2 = Button(root, text='2', padx=35, pady=35, command=lambda: Click(2))
button3 = Button(root, text='3', padx=35, pady=35, command=lambda: Click(3))
button4 = Button(root, text='4', padx=35, pady=35, command=lambda: Click(4))
button5 = Button(root, text='5', padx=35, pady=35, command=lambda: Click(5))
button6 = Button(root, text='6', padx=35, pady=35, command=lambda: Click(6))
button7 = Button(root, text='7', padx=35, pady=35, command=lambda: Click(7))
button8 = Button(root, text='8', padx=35, pady=35, command=lambda: Click(8))
button9 = Button(root, text='9', padx=35, pady=35, command=lambda: Click(9))
button0 = Button(root, text='0', padx=35, pady=35, command=lambda: Click(0))
buttonPlus = Button(root, text='+', padx=34, pady=35, command=Plus)
buttonMinus = Button(root, text='-', padx=34, pady=35, command=Minus)
buttonTimes = Button(root, text='*', padx=34, pady=35, command=Times)
buttonOver = Button(root, text='/', padx=34, pady=35, command=Over)
buttonEquals = Button(root, text='=', padx=77, pady=35, command=Equal)
buttonClear = Button(root, text='C', padx=35, pady=35, command=Clear)
# Drawing stuff
e.grid(row=0, column=0, columnspan=3, padx=9, pady=5)
button1.grid(row=3, column=0)
button2.grid(row=3, column=1)
button3.grid(row=3, column=2)
button4.grid(row=2, column=0)
button5.grid(row=2, column=1)
button6.grid(row=2, column=2)
button7.grid(row=1, column=0)
button8.grid(row=1, column=1)
button9.grid(row=1, column=2)
button0.grid(row=4, column=0,)
buttonEquals.grid(row=4, column=1, columnspan=2)
buttonClear.grid(row=0, column=3)
buttonPlus.grid(row=1, column=3)
buttonMinus.grid(row=2, column=3)
buttonTimes.grid(row=3, column=3)
buttonOver.grid(row=4, column=3)
root.mainloop()
顺便说一句,问题是
“C”
按钮似乎根本不起作用,而且当添加数字时,它会做一些毫无意义的数学运算(我不认为我会告诉它)在Clear():
中,您需要将所有这些变量声明为全局
,以便能够修改它们@据我所知,使用globals并不是最好的选择,所以应该避免使用globals