问题描述
我一直在尝试使用 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()