Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我简单的tkinter计算器给我的结果毫无意义?_Python_Python 3.x_Tkinter_Math - Fatal编程技术网

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