Найти - Пользователи
Полная версия: Как правильно запустить ни потока?
Начало » Python для новичков » Как правильно запустить ни потока?
1
pal201
Делаю так:
……….
……….
tk = Tk()
st=ScrolledText(tk,background=“grey”,font=('Tahoma',12,'bold'))

def win():
#tk = Tk()
st=ScrolledText(tk,background=“grey”,font=('Tahoma',12,'bold'))
st.pack(side=LEFT, fill=BOTH, expand=1)
tk.mainloop()

def print_log(tx):
global st
st.insert(END, tx)


if __name__=='__main__':
thread.start_new(win,())
print_log(u'==> Текст…\n')

далее по условию запускается еще 2 потока, но им не нужен GUI.

Задача такая, что бы писать лог в текстовое поле со скроллом.
В чем моя ошибка?
o7412369815963
попробуй в ф-ию win добавить параметр: def win(param):
вот примеры исп. потоков http://lega.selfip.com/page/37
pal201
Я так понял, что проблема заключается в том, что создаются разные экземпляры объекта st, сначала в инициализации, а затем в фунции win. Но если не инициализировать st глобально, то тогда не видится из функции print_log. Как решить такую проблему?
truporez
Сама постановка задачи неверна. Так делать не следует, во избежании различного рода граблей, потому как ui позволяет управлять своими контролами только из потока самого ui. Создайте очередь(Queue), и передавайте данные через нее. Можете создать ее глобально, либо в __main__ и передать в win вторым параметром, кортежем.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB