2016-01-04 2 views
0

Есть сотни вопросов, связанных с while True: петлю в Tkinter (который, конечно, завершает работу в аварийном его, потому что он никогда не выполняет mainloop() (см here и here для двух сотен примеров)). Очевидные (и пока только) ответы требуют некоторой функции.Заменить время цикла в Tkinter без использования функции

Мой вопрос: есть ли способ, чтобы иметь что-то похожее на while True: петлю в Tkinter, не врезаться, без с помощью функции? Я не нашел таких вопросов.

+0

Почему без использования функции? – TigerhawkT3

+0

Потому что использование функции делает код раздражающим и неудобным для работы, и я действительно не беспокоюсь об этом (программисты программы, потому что они ленивы, не так ли?). Если нет ответа, он вернется к игре. –

+1

Вы найдете это менее неудобно, чем больше вы его тренируете. Во всяком случае, это наверняка будет менее затруднительно, чем альтернативные хаки (если они существуют). – TigerhawkT3

ответ

1

Я не очень хорошо знаком с питоном и Tkinter, но это должно работать:

import tkinter as tk 
import threading 

root = tk.Tk() 
thread = threading.Thread(target=root.mainloop) 
thread.start() 

while True: 
    print("Hello, World!"); 
    # TODO - add more stuff to this while loop 
+0

Исправьте меня, если я ошибаюсь, но 'thread.start()' является функцией. Это просто определено в другом файле. – TigerhawkT3

+0

Извините, я должен был перефразировать этот вопрос - это просто означает * без * использования функции * внутри * самого файла. EDIT: Он работает! Благодаря! –

+0

При расширении до реальной программы это, скорее всего, сбой. Tkinter не является потокобезопасным; вы обычно должны только когда-либо называть 'mainloop' из того же потока, который создал виджеты. –

Смежные вопросы