time.sleep предотвращает выполнение предыдущей строки кода - PullRequest
0 голосов
/ 21 марта 2019

Пожалуйста, помогите!:

В моем коде есть строка time.sleep (2), которая запускается после создания метки Tkinter. Ярлык не создан. Код time.sleep предотвращает создание метки.

Код:

youhaveregisteredlabel = Label(registerscreen.canvas, text='You have been registered', font=("Arial", 25), bg='#A9E2f3').place(x=0, y=375, width=600, height=150)
#creates a tkinter label widget called 'youhaveregisteredlabel' with the text "You have been registered" on it.

time.sleep(2) 
#creates a 2 second time delay

registerscreenback() 
#runs the registerscreenback subroutine, hiding the register screen and revealing the start screen.

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

time.sleep не препятствует выполнению предыдущей команды.Это препятствует тому, чтобы пользовательский интерфейс мог обновить себя, чтобы показать результаты команды.Сама команда была выполнена, но вы не позволяете tkinter показывать ее.

Tkinter является однопоточным, поэтому, пока ваш собственный код выполняется или спит, он не может реагировать на события.Это означает, что не только такие события, как нажатия кнопок, но и внутренние события, такие как запросы на перерисовку окна с новой информацией.

Как правило, никогда не следует вызывать sleep в том же потоке, что и код графического интерфейса пользователя.потому что он делает именно это: он спит.

Если вам нужно вызвать sleep, или вы должны вызвать длительный раздел кода, вы можете явно заставить tkinter обновиться, вызвав метод update_idletasks, общий для всехвиджеты.

0 голосов
/ 21 марта 2019

Попробуй tk.update () перед сном

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...