Portál AbcLinuxu, 14. května 2025 00:01

Dotaz: Rolování textu v okně

28.9.2013 21:00 jan.rok | skóre: 21
Rolování textu v okně
Přečteno: 338×
Odpovědět | Admin
Dobrý den,

mám možná trochu nezvyklý dotaz - hledám program, který by mi umožnil zadat krátký text, který by pak roloval na obrazovce v okně zprava doleva.

Mám představu, že bych měl na monitoru trvale ve smyčce nějaké video a pod tím cyklicky zobrazoval nějaké informace (třwba tak, jako to má ČT24).

Nevíte někdo o něčem takovém, popř. jak to udělat?

Díky. J. R.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.9.2013 00:03 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Rolování textu v okně
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je to možné? Niekto hľadá marquee ;-)
29.9.2013 07:30 jan.rok | skóre: 21
Rozbalit Rozbalit vše Re: Rolování textu v okně
Tohle ale pro mě není použitelné, neboť text bude rolovat v okně webového prohlížeče. Já potřebuju program, který pustí text jen do prostého rámečku, bez ovládacích prvků, bez menu, stavového řádku apod.

Ve Windows bych to snadno naprogramoval třeba ve Visual Basicu, ale v Linuxu to neumím.

Jde mi jen o prostý frame s textem. Mám představu: v terminálu zadám příkaz, jako parametr textový řetězec a otevře se jednoduchý rámeček a běžícím textem (max. s křížkem pro zavření okna).

29.9.2013 09:41 potato
Rozbalit Rozbalit vše Re: Rolování textu v okně
#!/usr/bin/python
# vim: set fileencoding=utf-8 :
from gi.repository import Gtk, GLib
from math import fmod

tstart = GLib.get_real_time()
text = u'<span size="20000" weight="bold">Je to možné? Niekto hľadá <u>marquee</u>! Ve Windows bych to snadno naprogramoval třeba ve <span color="red">Visual Basicu</span>, ale v Linuxu to neumím.    </span>'

def draw(wid, cr):
    cr.save()
    cr.set_source_rgb(1.0,1.0,1.0)
    cr.paint()
    cr.restore()

    tnow = GLib.get_real_time()
    pl = wid.create_pango_layout('')
    pl.set_markup(text)
    ww = wid.get_allocated_width()
    w,h = pl.get_pixel_size()
    x = (tnow - tstart)/1e6 * 150.0 + (w - ww)
    x = w - fmod(x, w)
    ctx = wid.get_style_context()
    if x > ww:
        Gtk.render_layout(ctx, cr, x-w, 0, pl)
    else:
        Gtk.render_layout(ctx, cr, x, 0, pl)
        Gtk.render_layout(ctx, cr, x-w, 0, pl)
    return True

def redraw(wid):
    wid.queue_draw()
    return True

win = Gtk.Window(Gtk.WindowType.TOPLEVEL)
win.set_default_size(600,40)
win.set_has_resize_grip(False)
win.connect('destroy', Gtk.main_quit)
win.connect('draw', draw)
win.show_all()
GLib.timeout_add(20, redraw, win)
Gtk.main()
Ne, není to kompletní program včetně zadávání z příkazové řádky a pod., protože si fungování budeš muset upravovat tak jako tak.
29.9.2013 12:42 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Rolování textu v okně
jen do prostého rámečku, bez ovládacích prvků, bez menu, stavového řádku apod.

To všetko sa dá s browserom urobiť.
29.9.2013 13:11 potato
Rozbalit Rozbalit vše Re: Rolování textu v okně
Taky se dá napsat webserver v PostScriptu. Ale proč to dělat. S browserem musíš řešit nejen ty jednoduché věci jako zobrazení toho textu, ale především se matlat se separací od normálních browsovacích procesů a profilů, hledat, který browser nezobrazuje marequee nepoužitelně trhaně, a na závěr to přepisovat do js, když zjisíš, že žádný...
pepe_ avatar 29.9.2013 22:40 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Rolování textu v okně
Odpovědět | | Sbalit | Link | Blokovat | Admin

Co gambas ? To je podobné tomu tvému visualu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.