为什么我的 Tkinter 计算器只输出 0?

问题描述

我一直在尝试使用 Tkinter 模块在 python 中制作一个简单的计算器,它所做的只是显示 0。这是代码

import tkinter as tk
window = tk.Tk()
calclabel = tk.Label(text = "This is a calculator.\nType yor numbers in the space given below and click on any on the operators to carry out the operation.")
calclabel.pack()
entry1 = tk.Entry()
entry1.pack()
entry2 = tk.Entry()
entry2.pack()
a = int()
b = int()
entry1.get = a
entry2.get = b
def addcommand () :
    addlabel = tk.Label(text = a+b)
    addlabel.pack()

def subcommand () :
    sublabel = tk.Label(text = a-b)
    sublabel.pack()

def multicommand () :
    multilabel = tk.Label(text = a*b)
    multilabel.pack()

def divicommand () :
    divilabel = tk.Label(text = a/b)
    divilabel.pack()

add = tk.Button(text = "Add",command = addcommand,master = window)
add.pack()

sub = tk.Button(text = "Substract",command = subcommand,master = window)
sub.pack()

mul = tk.Button(text = "Multiply",command = multicommand,master = window)
mul.pack()

div = tk.Button(text = "Divide",command = divicommand,master = window)
div.pack()

任何帮助将不胜感激,因为我认为这是一个逻辑错误,我无法弄清楚。

解决方法

看来你做错了。 每次执行任何 command 时,都应该从 entry 中获取值,然后进行计算。 如下图

def addcommand () :
    a = int(entry1.get()) # get the value from entry1 and cast it to integer
    b = int(entry2.get()) # get the value from entry1 and cast it to integer
    addlabel = tk.Label(text = a+b) # do the calculation
    addlabel.pack()

您可以在转换过程中使用 try except 块来处理 exception

你可以这样做

import tkinter as tk
window = tk.Tk()
calclabel = tk.Label(text = "This is a calculator.\nType yor numbers in the space given below and click on any on the operators to carry out the operation.")
calclabel.pack()
entry1 = tk.Entry()
entry1.pack()
entry2 = tk.Entry()
entry2.pack()
# a = int()
# b = int()
# entry1.get = a
# entry2.get = b
def addcommand () :
    a = int(entry1.get())
    b = int(entry2.get())
    addlabel = tk.Label(text = a+b)
    addlabel.pack()

def subcommand () :
    a = int(entry1.get())
    b = int(entry2.get())
    sublabel = tk.Label(text = a-b)
    sublabel.pack()

def multicommand () :
    a = int(entry1.get())
    b = int(entry2.get())
    multilabel = tk.Label(text = a*b)
    multilabel.pack()

def divicommand () :
    a = int(entry1.get())
    b = int(entry2.get())
    divilabel = tk.Label(text = a/b)
    divilabel.pack()

add = tk.Button(text = "Add",command = addcommand,master = window)
add.pack()

sub = tk.Button(text = "Substract",command = subcommand,master = window)
sub.pack()

mul = tk.Button(text = "Multiply",command = multicommand,master = window)
mul.pack()

div = tk.Button(text = "Divide",command = divicommand,master = window)
div.pack()

tk.mainloop()