Форум сайта python.su
Здравствуйте.
1)Хочу сделать программку для считывания определенных данных в виджет Text автоматически,через определенный интервал.При этом нужно чтоб смог и кнопки нажимать для управления,а не крутилась программка в одном цикле обновления Text.
2) Также хотел спросить есть возможность в поле Text выводить информацию с новой строки,не затирая старую ?
Офлайн
Делайте таймер в другом потоке
Офлайн
FishHook ты не прав, дядька. С потоками Tkinter очень сильно не дружит. Там ломается все, хотя есть хак, как запустить в отдельном потоке.
Тут есть несколько вариантов:
1. Запускать вообще как отдельное приложение бекграунд задачу использую сельдерей или RQ.
2. Использовать хак, который позволяет запустить GUI в отдельном потоке.
3. Построить систему на коллбеках (сложно тестировать и вообще овер).
По второму вопросу. Да можно. Вместо индекса нужно использовать (“END”).
Офлайн
CergeiТут важно понимать сколько времени считывание занимает. Если все проходит быстро и безболезненно то таймер и без тредов позволит решить задачу.
через определенный интервал
4kpt_IVА OnIdle в Tk нет?
С потоками Tkinter очень сильно не дружит.
Офлайн
По таймеру само то.
Теперь сообразить как сделать таймер и чтоб он вызывался.Ведь Tk крутится постоянно в одном цикле и прервать его можно через кнопку->bind.
Таймер делаем через модуль time ? с помощью time.time() ? Но как то попасть надо на строчку time.time() в Tk…..
Отредактировано Cergei (Дек. 26, 2016 11:04:32)
Офлайн
CergeiВы не поняли. Я имел ввиду таймер Tk который изначально встроен в mainloop
По таймеру само то.
Теперь сообразить как сделать таймер и чтоб он вызывался.
from Tkinter import * import time def tick(): label.after(200, tick) label['text'] = time.strftime('%H:%M:%S') root=Tk() label = Label(font='sans 20') label.pack() label.after_idle(tick) root.mainloop()
Офлайн