使用 tkinter 从条目小部件打印输入到文本框

程序员

您好,我是 Python 新手,并试图了解 Tkinter。我正在尝试制作一个应用程序,您可以在其中输入贷款和投资。该程序中有 2 个文本框,如果您进行投资或贷款,该程序会将它们打印在文本框中。另一个文本框应该显示您的贷款和投资总额,但我有几个问题:

1)文本框总是显示最新的输入,而不是我输入的总数。

2)文本框显示我的投资或我的贷款,但我希望它同时显示我的总贷款和我的总投资。

任何人都可以帮忙吗?

import tkinter as tk

root = tk.Tk()

canvas = tk.Canvas(height=700, width=900)
canvas.pack()

frame = tk.Frame(root, bd=5)
frame.place(relx=0.05, rely=0.05, relwidth=0.9, relheight=0.9)

button1 = tk.Button(frame, text="Loan", font="fill")
button2 = tk.Button(frame, text="Investment", font="fill")
entry1 = tk.Entry(frame, font="fill")
entry2 = tk.Entry(frame, font="fill")
textbox1 = tk.Text(frame, font="fill")
textbox2 = tk.Text(frame, font="fill")

button1.place(relx=0.1, rely=0.1, relwidth=0.3, relheight=0.15)
button2.place(relx=0.1, rely=0.3, relwidth=0.3, relheight=0.15)
entry1.place(relx=0.5, rely=0.1, relwidth=0.4, relheight=0.15)
entry2.place(relx=0.5, rely=0.3, relwidth=0.4, relheight=0.15)
textbox1.place(relx=0.1, rely=0.5, relwidth=0.3975, relheight=0.4)
textbox2.place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4)

def printer1(event):
    loan = 0
    entered_text = float(tk.Entry.get(entry1))
    loan += entered_text
    if entered_text:
        textbox1.insert(tk.END, "New loan taken: " + str(loan) + " €" + "\n")
        textbox2.delete(1.0, tk.END)
        textbox2.insert(1.0, "Your loan in total: " + str(loan) + " €" + "\n")
    else:
        pass

def printer2(event):
    investment = 0
    entered_text = float(tk.Entry.get(entry2))
    investment += entered_text
    if entered_text:
        textbox1.insert(tk.END, "Money invested: " + str(investment) + " €" + "\n")
        textbox2.delete(1.0, tk.END)
        textbox2.insert(1.0, "Your investments in total: " + str(investment) + " €" + "\n")
    else:
        pass

button1.bind("<Button-1>", printer1)
button2.bind("<Button-1>", printer2)

root.mainloop()
亨利·伊克

您的变量loaninvestment函数中的局部变量在每次调用函数时都会重置为 0。最简单的方法是将它们移到函数外,然后global在函数内声明

import tkinter as tk

root = tk.Tk()

...

loan = 0
investment = 0

def printer1(event):
    entered_text = float(tk.Entry.get(entry1))
    global loan
    ...

def printer2(event):
    global investment
    entered_text = float(tk.Entry.get(entry2))
    ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从Tkinter文本小部件获取输入?

如何从Tkinter文本小部件获取输入?

可以使用tkinter将中文文本输入到tk文本和条目小部件中吗?

Tkinter文本小部件-在事件功能中使用单击的文本

使用tkinter文本小部件显示结果

使用条目窗口小部件Tkinter时出错

清除Tkinter TEXT小部件使用的RAM

使用tkinter使用输入小部件制作新窗口

我使用绑定功能时的Tkinter条目/文本小部件问题

使用继承正确扩展tkinter小部件

如何使用网格调整Tkinter文本输入小部件的大小?

使用Tkinter在运行时写入文本小部件

文本小部件tkinter

使用tkinter,python将输入数据显示到文本框中时出现问题

解开Tkinter的文本框小部件

tkinter条目小部件textvariable将不会使用.set方法更新

使用按钮从Tkinter条目搜索框中获取文本

如何使用通过 Tkinter 输入小部件输入的值

tkinter 条目小部件的验证

tkinter - 如何使用 get() 将滚动文本小部件中的输入保存到变量

存储来自文本框 tkinter 的输入

如何更改条目小部件 tkinter 中的文本

在 if 条件下使用后,tkinter 中不可编辑的输入框(小部件)

如何从 tkinter 中的条目小部件返回用户输入

使用按钮输入 tkinter 条目

Tkinter 输入框到文本框

Tkinter:如何使用缩放小部件的值来更改标签小部件的文本?

Tkinter:使用返回小部件

使用逗号从 tkinter 文本小部件列表中插入值