Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 17, 2010 15:55:49

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно запустить ни потока?

Делаю так:
……….
……….
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.

Задача такая, что бы писать лог в текстовое поле со скроллом.
В чем моя ошибка?



Офлайн

#2 Фев. 17, 2010 16:34:23

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Как правильно запустить ни потока?

попробуй в ф-ию win добавить параметр: def win(param):
вот примеры исп. потоков http://lega.selfip.com/page/37

Офлайн

#3 Фев. 17, 2010 20:38:46

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно запустить ни потока?

Я так понял, что проблема заключается в том, что создаются разные экземпляры объекта st, сначала в инициализации, а затем в фунции win. Но если не инициализировать st глобально, то тогда не видится из функции print_log. Как решить такую проблему?



Офлайн

#4 Фев. 17, 2010 22:14:24

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Как правильно запустить ни потока?

Сама постановка задачи неверна. Так делать не следует, во избежании различного рода граблей, потому как ui позволяет управлять своими контролами только из потока самого ui. Создайте очередь(Queue), и передавайте данные через нее. Можете создать ее глобально, либо в __main__ и передать в win вторым параметром, кортежем.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version