Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 12, 2012 19:32:41

nauman
От:
Зарегистрирован: 2009-10-28
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Бегущая строка.

Хочу создать интерактивную бегущую строку в графическом окне. Окно создать при помощи WX модуля не проблема, а вот анимацию текста не знаю как. Гуглом вообще ничего не нашел на эту тему. Есть ли варианты? Спасибо.



Офлайн

#2 Июнь 12, 2012 20:08:26

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Бегущая строка.

Ну а че сложного то? Срез строки знаешь что такое? В цикле прогони, и выводи срез строки в соответсвующий виджет (статус бар или в другое место куда тебе надо). Прикрутишь таймер и все будет ок. Выкладывай наработки свои, дальше будем смотреть что да как.

Офлайн

#3 Июнь 12, 2012 20:35:20

nauman
От:
Зарегистрирован: 2009-10-28
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Бегущая строка.

Piton23
Прикрутишь таймер и все будет ок.
Через промежуток времени смещение координат отображения текста, я правильно понял?
Вообще то строка берется из словаря, в качестве значения url адрес. Задумка такая - инфа парсится с сайта заностся в словарь, кликаешь мышью по бегущей строке, открывается соответствующая веб страница в веб браузере.



Отредактировано nauman (Июнь 12, 2012 20:49:41)

Офлайн

#4 Июнь 12, 2012 21:32:16

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Бегущая строка.

как то так в общем

>>> def show(text, maximum):
	text = ' ' * maximum + text
	for i in range(len(text)):
		print text[i:i+maximum]
		
>>> text = 'Чемпионат европы 2012'
>>> show(text, 12)
            
           Ч
          Че
         Чем
        Чемп
       Чемпи
      Чемпио
     Чемпион
    Чемпиона
   Чемпионат
  Чемпионат 
 Чемпионат е
Чемпионат ев
емпионат евр
мпионат евро
пионат европ
ионат европы
онат европы 
нат европы 2
ат европы 20
т европы 201
 европы 2012
европы 2012
вропы 2012
ропы 2012
опы 2012
пы 2012
ы 2012
 2012
2012
012
12
2
>>> show(text, 20)
                    
                   Ч
                  Че
                 Чем
                Чемп
               Чемпи
              Чемпио
             Чемпион
            Чемпиона
           Чемпионат
          Чемпионат 
         Чемпионат е
        Чемпионат ев
       Чемпионат евр
      Чемпионат евро
     Чемпионат европ
    Чемпионат европы
   Чемпионат европы 
  Чемпионат европы 2
 Чемпионат европы 20
Чемпионат европы 201
емпионат европы 2012
мпионат европы 2012
пионат европы 2012
ионат европы 2012
онат европы 2012
нат европы 2012
ат европы 2012
т европы 2012
 европы 2012
европы 2012
вропы 2012
ропы 2012
опы 2012
пы 2012
ы 2012
 2012
2012
012
12
2

А насчет того чтобы отловить линк (открыть в браузере) то тут надо подумать как правильно предоставить инфу. Теоретически если у тебя поле на 10 символов, то в каждый момент времени ты по сути знаешь в какой начинается и в какой заканчивается у тебя линк, и если клик мыши попал в этот диапазон в заданное время то генерится событие. Может есть и более простое решение, но пока первое что пришло в голову, мб кто другой подскажет.

Офлайн

#5 Июнь 13, 2012 07:45:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Бегущая строка.

>>> import time
>>> 
>>> def show(text, maximum, delay):
...     text = ' ' * maximum + text
...     for i in range(len(text)):
...         print('{0} \r'.format(text[i:i + maximum]), end='')
...         time.sleep(delay)
... 
>>> show('a b c', 50, 0.3)                             
>>>



Офлайн

#6 Июнь 13, 2012 10:59:56

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

Бегущая строка.

А если в Qt сделать Label с HTML

<marquee>Some text</marquee>
получится бегущая строка?
Стало интересно, а попробовать пока возможности нет.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version