您好,我是 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()
您的变量loan
和investment
函数中的局部变量在每次调用函数时都会重置为 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] 删除。
我来说两句