Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Tk,обновление виджета Text автоматически [RSS Feed]

#1 Дек. 25, 2016 02:53:43

Cergei
Зарегистрирован: 2015-06-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Tk,обновление виджета Text автоматически

Здравствуйте.
1)Хочу сделать программку для считывания определенных данных в виджет Text автоматически,через определенный интервал.При этом нужно чтоб смог и кнопки нажимать для управления,а не крутилась программка в одном цикле обновления Text.

2) Также хотел спросить есть возможность в поле Text выводить информацию с новой строки,не затирая старую ?

Офлайн

#2 Дек. 25, 2016 07:41:58

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Tk,обновление виджета Text автоматически

Делайте таймер в другом потоке



Офлайн

#3 Дек. 25, 2016 09:42:30

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Tk,обновление виджета Text автоматически

FishHook ты не прав, дядька. С потоками Tkinter очень сильно не дружит. Там ломается все, хотя есть хак, как запустить в отдельном потоке.

Тут есть несколько вариантов:
1. Запускать вообще как отдельное приложение бекграунд задачу использую сельдерей или RQ.
2. Использовать хак, который позволяет запустить GUI в отдельном потоке.
3. Построить систему на коллбеках (сложно тестировать и вообще овер).

По второму вопросу. Да можно. Вместо индекса нужно использовать (“END”).

Офлайн

#4 Дек. 26, 2016 08:41:00

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Tk,обновление виджета Text автоматически

Cergei
через определенный интервал
Тут важно понимать сколько времени считывание занимает. Если все проходит быстро и безболезненно то таймер и без тредов позволит решить задачу.
4kpt_IV
С потоками Tkinter очень сильно не дружит.
А OnIdle в Tk нет?



Офлайн

#5 Дек. 26, 2016 10:15:58

Cergei
Зарегистрирован: 2015-06-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Tk,обновление виджета Text автоматически

По таймеру само то.
Теперь сообразить как сделать таймер и чтоб он вызывался.Ведь Tk крутится постоянно в одном цикле и прервать его можно через кнопку->bind.

Таймер делаем через модуль time ? с помощью time.time() ? Но как то попасть надо на строчку time.time() в Tk…..

Отредактировано Cergei (Дек. 26, 2016 11:04:32)

Офлайн

#6 Дек. 27, 2016 07:49:47

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Tk,обновление виджета Text автоматически

Cergei
По таймеру само то.
Теперь сообразить как сделать таймер и чтоб он вызывался.
Вы не поняли. Я имел ввиду таймер Tk который изначально встроен в mainloop

https://ru.wikiversity.org/wiki/%D0%9A%D1%83%D1%80%D1%81_%D0%BF%D0%BE_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B5_Tkinter_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_Python#after.2C_after_idle_.D0.B8_after_cancel.5B3.5D

 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()



Офлайн

  • Начало
  • » GUI
  • » Tk,обновление виджета Text автоматически[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version