Я новичок в питоне. Мой вопрос: могу ли я использовать одну кнопку «Оценить» несколько раз, чтобы вычислить мой ответ? В частности, проект заключается в реализации формулы Ньютона в tkinter. Если ввод равен 0, текстовое поле AssessmentVar вычисляется как результат 0. Если ввод является положительным числом, я должен иметь возможность обрабатывать число несколько раз, используя мою кнопку оценки в качестве цикла. Я легко смог получить окончательный результат, используя вложенный цикл while. Однако попытка повторно использовать кнопку оценки для постепенного перехода к алгоритму кажется невозможной. Я пробовал все. самое близкое, что я подошел, это установить мой inputVar для репликации моей оценкиVar, но это, очевидно, приведет к логической ошибке, поскольку ввод должен оставаться постоянным. Кроме того, я попытался установить глобальную переменную для оценки, но python не позволит мне манипулировать оценкой, и моя inputVar возвращает глобальное значение. Начальное значение оценки должно быть 1. Если у кого-то есть какой-либо вклад, мы будем очень признательны. Вот мой код
'''
Created on Nov 11, 2015
@author: lz206729
'''
from tkinter import *
class newtonGUI(Frame):
def __init__(self):
#Sets up window
Frame.__init__(self)
self.master.title("Newton's Square")
self.grid(column = 0, row = 0)
#Label and field for number input
self._inputLabel = Label(self, text = "Input a positive number to square: ")
self._inputLabel.grid(row = 0, column = 0)
self._inputVar = DoubleVar()
self._inputEntry = Entry(self, textvariable = self._inputVar)
self._inputEntry.grid(row = 0, column = 1)
#Displays the common square root
self._estimateLabel = Label(self, text = "The estimate is : ")
self._estimateLabel.grid(row = 1, column = 0)
self._estimateVar = DoubleVar()
self._estimateEntry = Entry(self, textvariable = self._estimateVar)
self._estimateEntry.grid(row = 1, column = 1)
#Button that computes the input
self._estimateButton = Button(self, text = "Estimate", command = self._newtonSquare)
self._estimateButton.grid(row = 4, column = 0)
#Button that resets text boxes
self._resetButton = Button(self, text = "Reset", command = self._reset)
self._resetButton.grid(row = 4, column = 1)
def _newtonSquare(self):
tolerance = 0.000001
estimate = 1
x = self._inputVar.get()
if x == 0:
self._estimateVar.set(x / 2)
else:
while True:
estimate = (estimate + x / estimate)/2
difference = abs(x - estimate **2)
if difference <= tolerance:
break
self._estimateVar.set(estimate)
def _reset(self):
self._inputVar.set(0)
self._estimateVar.set(0)
self._estimateButton.config(state='normal')
def main():
newtonGUI().mainloop()
main()