我用Python构建了一个基本的计算器 . 但后来,我尝试用Tkinter制作一个真正的GUI计算器 . 问题是我不知道如何获取值以及如何返回特定操作 .
基本上我的应用程序是这样的:
-
3个条目(第一个值,第二个值,结果)
-
4个按钮(加,减,乘,除) .
我希望我的程序要做的是:当有人在第一个条目中输入一个值而在第二个条目中输入另一个值,并在第三个条目中点击“Subtract”时,将显示减去这些数字的结果 . 我是python的新手,我发现它看起来太复杂了 .
from tkinter import *
def my_increase(a, b):
return a + b
def my_decrease(a, b):
return a - b
def my_multiply(a, b):
return a * b
def my_divide(a, b):
return a / b
main = Tk()
label_1 = Label(main, text="Calculator", height=5, width=30)
label_1.config(font=("OpenSans", 15))
label_1.pack()
frame_0 = Frame(main)
frame_0.pack()
frame_1 = Frame(main)
frame_1.pack()
frame_2 = Frame(main)
frame_2.pack()
button_1 = Button(frame_1, text="Add", fg="blue", command=my_increase)
button_1.config(font=("Lato", 12))
button_1.pack(side=LEFT)
button_2 = Button(frame_1, text="Subtract", fg="blue", command=my_decrease)
button_2.config(font=("Lato", 12))
button_2.pack(side=RIGHT)
button_3 = Button(frame_2, text="Multiply", fg="blue", command=my_multiply)
button_3.config(font=("Lato", 12))
button_3.pack(side=LEFT)
button_4 = Button(frame_2, text="Divide", fg="blue", command=my_divide)
button_4.config(font=("Lato", 12))
button_4.pack(side=RIGHT)
entry_1 = Entry(frame_0, bd=5)
entry_1.pack(side=TOP)
entry_2 = Entry(frame_0, bd=5)
entry_2.pack(side=TOP)
entry_3 = Entry(frame_0, bd=5)
entry_3.pack(side=TOP)
main.mainloop()
2 回答
这写得很糟糕,所以请使用一些建议并查看
tkinter
上的教程:仅导入您需要的内容
把所有东西都放在一堂课上 . (
__init__
应该接受一个Tk对象,创建所有小部件并启动循环,脚本只是初始化你的类对象) .你想要什么:
entry_3
更新能够使用:result = DoubleVar()
entry_3 = Entry(frame_0, bd=5,textvar=result)
这将是一个类中的
self.result
,因此您可以很好地从任何方法访问它 .result.set(a+b)
或
self.result
在课堂上 . 这样可以避免全局变量 . 这应该替换return
语句,你不会在任何地方返回 .entry_1.get()
自己读取方法中的输入字段,并且不接受任何参数 . 另一个选择是按下发送它们:button_2 = Button(frame_1, text="Subtract", fg="blue", command=lambda: my_decrease(float(entry_1.get()),float(entry_2.get())))
我会选择前者,并访问该对象的
entry_[1,2]
个字段(self.entry...
) . 祝好运 .附加到每个按钮的功能不应该需要任何参数 . 在您的示例中,您已使用两个参数a a和b定义了my_increase函数 . 但是通过单击按钮,没有参数传递给函数 . 相反,您可以从文本框中访问值并添加它们 .
要从文本框中访问值,您可以使用
要在文本框中设置值,您可以使用
这是您的代码,它执行所有必需的操作,如加法,减法, . 等等