как оно функционирует after в tkinter

У меня есть этот код python, чтобы создавать событие, которое работает каждая секунда. И да функционируй, проблема состоит в том, что я не понимаю хорошо почему.

Как я, в нем линия root.after(1000,timeChanged) произведи так называемый переиталик, но нет недостатка предел возврата.

Вещь меняется, когда присоединяются скобки в конце концов root.after(1000,timeChanged()). Здесь да пошли ошибку возврата.

Они знают, почему он отличный и почему он состоит в том, что оно функционирует?

import tkinter as tk
import time

def timeChanged():
    date = time.strftime("%H:%M:%S")
    timeLabel.configure(text = date)
    root.after(1000,timeChanged)
    
root = tk.Tk()
root.title("Ventana")
root.geometry("400x400")

#timeLabel = tk.Label(root, bg = "orange", textvariable = var, padx = 5, pady = 5, width = 10)
timeLabel = tk.Label(root, bg = "orange", text = "h", padx = 5, pady = 5, width = 10)
timeLabel.pack()

timeChanged()

root.mainloop()

``

0
задан 12.03.2019, 10:25
1 ответ

Аксель, когда ты выполняешь tГє cГіdigo, intГ©rprete python читает весь контент файла, и выполняет каждый instrucciГіn, что может. Для того, чтобы одна funciГіn смогла быть названной, необходимо, чтобы ты добавил их parГ©ntesis в конце имени Г©sta, как это случай ее penГєltima lГ-nea cГіdigo, который ты показываешь.

timeChanged()  # Aquí se está llamando a la función timeChanged

Взамен, когда ты используешь after , не estГЎs выполняя ее funciГіn прямо, но он estГЎs говоря в after, что я она бросил после x миллисекунды, тогда, когда intГ©rprete он читает следующее:

def timeChanged():
    date = time.strftime("%H:%M:%S")
    timeLabel.configure(text = date)
    root.after(1000,timeChanged)

SГіlo estГЎ читая ее definiciГіn ее funciГіn, но не она estГЎ выполняя.

Однако, когда ты делаешь вызов включая они parГ©ntesis, он estГЎs говоря в intГ©rprete, что я выполнил эту invocaciГіn в этом же самом моменте:

root.after(1000,timeChanged())

, Из-за которого cГіdigo он не продолжает читать и начинает повторять recursivamente, до тех пор, пока не случится ошибка.

0
ответ дан 19.11.2019, 22:15

Теги

Похожие вопросы