【问题标题】:Tkinter GUI calculator entry valuesTkinter GUI 计算器入口值
【发布时间】:2017-06-27 09:06:10
【问题描述】:

我已经使用 Python 构建了一个基本的计算器。但后来,我尝试用 Tkinter 制作一个真正的 GUI 计算器。问题是我不知道如何获取值以及如何返回具体操作。

基本上我的应用是这样的:

  • 3 个条目(第一个值、第二个值、结果)
  • 4 个按钮(加、减、乘、除)。

我希望我的程序做的是:当有人在第一个条目中输入一个值,在第二个条目中输入另一个值,然后单击第三个条目中的“减去”例如,减去这些数字的结果将是显示。我是 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()

【问题讨论】:

  • 有很多与从条目小部件中获取值相关的问题和答案,并且方法本身有据可查。在提问之前,您有没有做过任何研究来尝试自己解决这个问题?

标签: python user-interface tkinter


【解决方案1】:

附加到每个按钮的功能不应需要任何参数。在您的示例中,您定义了带有两个参数的 my_increase 函数,即 a 和 b。但是通过单击按钮,不会将参数传递给函数。相反,您可以从文本框中访问值并添加它们。

要从文本框中访问值,您可以使用

entry_1.get()

要在文本框中设置值,您可以使用

entry_3.insert(0, "test")

这是您的代码,它执行所有必需的操作,例如加法、减法等。等等

from Tkinter import *


def my_increase():
    entry_3.delete(0, END)
    entry_3.insert(0, int(entry_1.get()) + int(entry_2.get()))


def my_decrease():
    entry_3.delete(0, END)
    entry_3.insert(0, int(entry_1.get()) - int(entry_2.get()))


def my_multiply():
    entry_3.delete(0, END)
    entry_3.insert(0, int(entry_1.get()) * int(entry_2.get()))


def my_divide():
    entry_3.delete(0, END)
    entry_3.insert(0, int(entry_1.get()) / int(entry_2.get()))


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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多