Tkinter 中的条目和结果框计算器
Entry and result box calculator in Tkinter
我是编程语言的非常非常非常初学者,现在我开始学习 python,我已经学会了基础知识,现在我刚开始尝试用 Tkinter 制作一个简单的计算器之类的东西。在这里,我试图用 'Entry' 和 'Button' 制作一个简单的计算器,但我很难想象会发生什么。
我在我的应用程序中想要的是:如何将第一个和第二个输入字段的值与有问题的按钮 (+) 组合或添加,然后在单击按钮后,结果出现在 (+) 按钮旁边的框条目中.
我知道这里有很多类似的问题(输入小部件等),但我真的是一个初学者,通过查看这个论坛中已有的问题还没有得到任何答案。
很抱歉这个初学者问题,我请求你的帮助。
import tkinter as tk
from tkinter import *
root = tk.Tk() #main windownya
root.geometry("300x300")
root.title("Little Calc")
#Label
Label(root, text="Input First Number: ").grid(row=0, column=0)
Label(root, text="Input Second Number: ").grid(row=1, column=0)
Label(root, text="Choose Addition: ").grid(row=2, column=0)
Label(root, text="Result: ").grid(row=2, column=1)
#Entry
firstnumb = Entry(textvariable=IntVar()).grid(row=0, column=1)
secnumb = Entry(textvariable=IntVar()).grid(row=1, column=1)
#Plus Button
plus_button = Button(root, text="+", command=lambda: firstnumb.get()+secnumb.get(), width=6, height=1).grid(row=3, column=0)
plusresult = Entry(plus_button).grid(row=3, column=1)
root.mainloop()
当我 运行 你的代码时,我在这里得到一个 nullPointerException:
plus_button = Button(root, text="+", command=lambda: firstnumb.get()+secnumb.get(), width=6, height=1).grid(row=3, column=0)
为什么会这样?您在 firstnumb 和 secnumb 上使用 get() 方法,这些变量定义为:
firstnumb = Entry(textvariable=IntVar()).grid(row=0, column=1)
secnumb = Entry(textvariable=IntVar()).grid(row=1, column=1)
并且这两个变量的值都为 null,而不是您想要的 Entry 对象。发生这种情况是因为您还在变量声明中使用了 grid() 方法,而此方法 return 为 null。分两步执行此操作可解决您的问题。
firstnumb = Entry(textvariable=IntVar())
firstnumb.grid(row=0, column=1)
secnumb = Entry(textvariable=IntVar())
secnumb.grid(row=1, column=1)
当我现在点击“+”按钮时没有发生错误,但结果也没有显示。我建议您在放置此代码的地方创建一个新函数:firstnumb.get()+secnumb.get(), width=6, height=1).grid(row=3, column=0
和显示结果的代码。
另外,请注意 get() 将 return 一个字符串,确保在添加这两个值之前先将其转换为 int 或 float。如果你不这样做,10 + 15 将得到 1015。
我是编程语言的非常非常非常初学者,现在我开始学习 python,我已经学会了基础知识,现在我刚开始尝试用 Tkinter 制作一个简单的计算器之类的东西。在这里,我试图用 'Entry' 和 'Button' 制作一个简单的计算器,但我很难想象会发生什么。 我在我的应用程序中想要的是:如何将第一个和第二个输入字段的值与有问题的按钮 (+) 组合或添加,然后在单击按钮后,结果出现在 (+) 按钮旁边的框条目中. 我知道这里有很多类似的问题(输入小部件等),但我真的是一个初学者,通过查看这个论坛中已有的问题还没有得到任何答案。 很抱歉这个初学者问题,我请求你的帮助。
import tkinter as tk
from tkinter import *
root = tk.Tk() #main windownya
root.geometry("300x300")
root.title("Little Calc")
#Label
Label(root, text="Input First Number: ").grid(row=0, column=0)
Label(root, text="Input Second Number: ").grid(row=1, column=0)
Label(root, text="Choose Addition: ").grid(row=2, column=0)
Label(root, text="Result: ").grid(row=2, column=1)
#Entry
firstnumb = Entry(textvariable=IntVar()).grid(row=0, column=1)
secnumb = Entry(textvariable=IntVar()).grid(row=1, column=1)
#Plus Button
plus_button = Button(root, text="+", command=lambda: firstnumb.get()+secnumb.get(), width=6, height=1).grid(row=3, column=0)
plusresult = Entry(plus_button).grid(row=3, column=1)
root.mainloop()
当我 运行 你的代码时,我在这里得到一个 nullPointerException:
plus_button = Button(root, text="+", command=lambda: firstnumb.get()+secnumb.get(), width=6, height=1).grid(row=3, column=0)
为什么会这样?您在 firstnumb 和 secnumb 上使用 get() 方法,这些变量定义为:
firstnumb = Entry(textvariable=IntVar()).grid(row=0, column=1)
secnumb = Entry(textvariable=IntVar()).grid(row=1, column=1)
并且这两个变量的值都为 null,而不是您想要的 Entry 对象。发生这种情况是因为您还在变量声明中使用了 grid() 方法,而此方法 return 为 null。分两步执行此操作可解决您的问题。
firstnumb = Entry(textvariable=IntVar())
firstnumb.grid(row=0, column=1)
secnumb = Entry(textvariable=IntVar())
secnumb.grid(row=1, column=1)
当我现在点击“+”按钮时没有发生错误,但结果也没有显示。我建议您在放置此代码的地方创建一个新函数:firstnumb.get()+secnumb.get(), width=6, height=1).grid(row=3, column=0
和显示结果的代码。
另外,请注意 get() 将 return 一个字符串,确保在添加这两个值之前先将其转换为 int 或 float。如果你不这样做,10 + 15 将得到 1015。