Трудности с выполнением функции .after – непрерывный цикл функцииPython

Программы на Python
Ответить
Anonymous
 Трудности с выполнением функции .after – непрерывный цикл функции

Сообщение Anonymous »

Насколько я понимаю, метод .after() используется, когда вы хотите приостановить выполнение цикла и открыть его для выполнения кода вне функции, которая находится в цикле, прежде чем перейти к следующей итерации. (Я могу ошибаться, так как я новичок в Python).
Функция read_analog() вызывается в нижней части кода после запуска множества других вещей. . Как только read_analog() запускается в первый раз, он просто продолжает зацикливаться и, кажется, «игнорирует» паузу в 2000 мс, которую я (думаю) имею в строке tkTop.after(2000, read_analog() ).
Я надеялся, что он прочитается в первый раз, а затем «откроется» для выполнения кода вне циклической функции read_analog() перед переходом к следующей итерации. Это приведет к последовательной распечатке значения каждые 2 секунды, а не к постоянному потоку значений.
Обратите внимание, что tkTop = tkinter.Tk() [я думаю, что обычно люди здесь используют root]?
Я пробовал использовать только «read_analog», здесь все было хорошо (без круглых скобок), и он сообщает значение каждые две секунды, как и должно быть, но не обновляет значение, как это происходит с постоянным потоком с помощью read_analog(). Первое прочитанное значение просто повторяется снова и снова каждые две секунды.
def read_analog():
value = ser.readline().decode()
value = value.rstrip('\r\n') # Remove carriage return
#valueint = int(float((value)))
print('Voltage', value, ' volts')
tkTop.after(2000, read_analog()) # period depends on how frequent the arduino writes data to its serial port


Подробнее здесь: https://stackoverflow.com/questions/791 ... f-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»