Python 3.x 使用tkinter将输入从输入小部件打印到文本框
您好,我是python新手,正在尝试了解Tkinter。我正在尝试做一个应用程序,你可以输入贷款和投资。该程序中有两个文本框,如果您进行投资或接受贷款,程序将在文本框中打印这些文本框。另一个文本框应显示您的贷款和投资总额,但我有几个问题: 1文本框始终显示最新输入,而不是我输入的总数 2文本框显示我的投资或贷款,但我希望它同时显示我的总贷款和总投资 有人能帮忙吗 将tkinter作为tk导入 root=tk.tk 画布=tk.画布高度=700,宽度=900 帆布包装 frame=tk.Frameroot,bd=5 frame.placerelx=0.05,rel=0.05,relwidth=0.9,relheight=0.9 button1=tk.Buttonframe,text=Loan,font=fill button2=tk.Buttonframe,text=Investment,font=fill entry1=tk.Entryframe,font=fill entry2=tk.Entryframe,font=fill textbox1=tk.Textframe,font=fill textbox2=tk.Textframe,font=fill 按钮1.placerelx=0.1,rely=0.1,relwidth=0.3,relheight=0.15 按钮2.placerelx=0.1,rely=0.3,relwidth=0.3,relheight=0.15 entry1.placerelx=0.5,rely=0.1,relwidth=0.4,relheight=0.15 entry2.placerelx=0.5,rely=0.3,relwidth=0.4,relheight=0.15 textbox1.placerelx=0.1,rel=0.5,relwidth=0.3975,relheight=0.4 textbox2.placerelx=0.5,rel=0.5,relwidth=0.4,relheight=0.4 def打印机1事件: 贷款=0 已输入\u text=floattk.Entry.getentry1 loan+=输入的\u文本 如果输入文本: textbox1.inserttk.END,获得的新贷款:+strloan+€+\n textbox2.delete1.0,tk.END textbox2.insert1.0,您的贷款总额:+strloan+€+\n 其他: 通过 def打印机2事件: 投资=0 已输入\ u text=floattk.Entry.getentry2 投资+=输入的文本 如果输入文本: textbox1.inserttk.END,投资金额:+striinvestment+€+\n textbox2.delete1.0,tk.END textbox2.insert1.0,您的投资总额:+striinvestment++\n 其他: 通过 按钮1.bind,打印机1 按钮2.bind,打印机2 root.mainloopPython 3.x 使用tkinter将输入从输入小部件打印到文本框,python-3.x,tkinter,Python 3.x,Tkinter,您好,我是python新手,正在尝试了解Tkinter。我正在尝试做一个应用程序,你可以输入贷款和投资。该程序中有两个文本框,如果您进行投资或接受贷款,程序将在文本框中打印这些文本框。另一个文本框应显示您的贷款和投资总额,但我有几个问题: 1文本框始终显示最新输入,而不是我输入的总数 2文本框显示我的投资或贷款,但我希望它同时显示我的总贷款和总投资 有人能帮忙吗 将tkinter作为tk导入 root=tk.tk 画布=tk.画布高度=700,宽度=900 帆布包装 frame=tk.Frame
我想回答
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)
history_loans=[]
history_investments=[]
def printer1(event):
loan = 0
entered_text = float(tk.Entry.get(entry1))
loan += entered_text
history_loans.append(loan)
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(sum(history_loans)) + " €" + "\n")
textbox2.insert(1.0, "Your investments in total: " + str(sum(history_investments)) + " €" + "\n")
else:
pass
def printer2(event):
investment = 0
entered_text = float(tk.Entry.get(entry2))
investment += entered_text
history_investments.append(investment)
if entered_text:
textbox1.insert(tk.END, "Money invested: " + str(investment) + " €" + "\n")
textbox2.delete(1.0, tk.END)
textbox2.insert(1.0, "Your loan in total: " + str(sum(history_loans)) + " €" + "\n")
textbox2.insert(1.0, "Your investments in total: " + str(sum(history_investments)) + " €" + "\n")
else:
pass
button1.bind("<Button-1>", printer1)
button2.bind("<Button-1>", printer2)
root.mainloop()
我们怎么能有一个历史:看什么。append看什么
如何在两种情况下打印:
textbox2.insert(1.0, "Your loan in total: " + str(sum(history_loans)) + " €" + "\n")
textbox2.insert(1.0, "Your investments in total: " + str(sum(history_investments)) + " €" + "\n")
变量loan和investment是函数中的局部变量,每次调用函数时都会重置为0。最简单的方法是将它们移到函数外,然后在函数内声明全局:
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))
...
textbox2.insert(1.0, "Your loan in total: " + str(sum(history_loans)) + " €" + "\n")
textbox2.insert(1.0, "Your investments in total: " + str(sum(history_investments)) + " €" + "\n")
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))
...