У меня есть домашнее задание, которое я почти выполнил, но полоса прокрутки работает не так, как ожидалось. Хотя он работает, когда я сосредоточен на тексте, он не работает, когда я пытаюсь переместить полосу прокрутки или использовать стрелки.Python Tkinter Text/Scrollbar Виджет не работает как ожидалось
from tkinter import *
class LoanCalculator:
def __init__(self):
window = Tk()
window.title("Loan Calculator")
frame = Frame(window)
frame.pack()
Label(frame, text="Loan Amount").grid(row=1,column=1, sticky=W)
self.loanAmmount = StringVar()
self.entryLoan = Entry(frame, textvariable=self.loanAmmount, justify=RIGHT)
Label(frame, text="Years").grid(row=1, column=3,sticky=W)
self.years = StringVar()
self.entryYears = Entry(frame, textvariable=self.years, justify=RIGHT)
btCalc = Button(frame, text="Calculate Loan", command=self.Calculate)
scrollbar = Scrollbar(frame)
self.text = Text(frame, width=60, height=10,wrap=WORD, yscrollcommand=scrollbar.set)
self.entryLoan.grid(row=1, column=2)
self.entryYears.grid(row=1, column=4)
btCalc.grid(row=1, column=5)
self.text.grid(row=2,column=1,columnspan=4)
scrollbar.grid(row=2, column=5, sticky="NSW")
window.mainloop()
def Calculate(self):
self.text.delete("1.0", END)
self.text.insert(END, "{0:<20s}{1:<20s}{2:<20s}".format("Interest Rate", "Monthly Payment", "Total Payment"))
aIR = 5.0
mIR = 0
mP = 0
tP = 0
fLA = 0
fYear = 0
lA = 0
year = 0
textToOut = ""
while aIR <= 8.0:
fLA = self.loanAmmount.get()
fYear = self.years.get()
lA = int(fLA)
year = int(fYear)
mIR = aIR/1200
mP = lA * mIR/(1 - (pow(1/(1 + mIR), year * 12)))
tP = mP * year * 12
textToOut = format(aIR, ">5.3f") + "%" + format(mP, "20.2f") + format(tP, "20.2f") + "\n"
self.text.insert(END, textToOut)
aIR += 1.0/8
LoanCalculator()
EDIT Я изменил мой вопрос к падению текстовой части, как я понял, обходной путь для этого.