abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 04:33 | Nová verze

    Open source software pro úpravu digitálních fotografií LightZone (Wikipedie) byl vydán v nové verzi 5.0.0. LightZone je dnes k dispozici pod licencí BSD. Původně se jednalo o proprietární software vyvíjený společností Light Crafts. Ta v prosinci 2012 souhlasila s uvolněním zdrojových kódů jako open source [Wayback Machine].

    Ladislav Hagara | Komentářů: 0
    23.5. 17:22 | Nová verze

    Byla vydána verze 0.84 telnet a ssh klienta PuTTY (Wikipedie). Podrobnosti v přehledu nových vlastností a oprav chyb a Change Logu.

    Ladislav Hagara | Komentářů: 1
    22.5. 19:44 | IT novinky

    Microsoft představil Azure Linux 4.0 a Azure Container Linux. Na konferenci Open Source Summit North America 2026 organizované konsorciem Linux Foundation a sponzorované také Microsoftem. Azure Linux 4.0 vychází z Fedora Linuxu. Azure Container Linux je založen na projektu Flatcar. Azure Linux (GitHub, Wikipedie) byl původně znám jako CBL-Mariner.

    Ladislav Hagara | Komentářů: 0
    22.5. 12:22 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 165 (pdf).

    Ladislav Hagara | Komentářů: 0
    22.5. 10:55 | Nová verze

    Byla vydána verze 9.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a informačním videu.

    Ladislav Hagara | Komentářů: 5
    22.5. 09:33 | IT novinky

    Firefox 151 podporuje Web Serial API. Pro komunikaci s různými mikrokontroléry připojenými přes USB nebo sériové porty už není nutné spouštět Chrome nebo na Chromiu postavené webové prohlížeče.

    Ladislav Hagara | Komentářů: 9
    22.5. 04:44 | Nová verze

    Byla vydána nová stabilní verze 8.0 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 148. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    21.5. 21:33 | Bezpečnostní upozornění

    Ve FreeBSD byla nalezena a opravena zranitelnost FatGid aneb CVE-2026-45250. Jedná se o lokální eskalaci práv. Neprivilegovaný uživatel se může stát rootem.

    Ladislav Hagara | Komentářů: 0
    21.5. 14:33 | IT novinky

    Společnost Flipper Devices oznámila Flipper One. Zcela nový Flipper postavený od nuly. Jedná se o open-source linuxovou platformu založenou na čipu Rockchip RK3576. Hledají se dobrovolníci pro pomoc s dokončením vývoje (ovladače, testování, tvorba modulů).

    Ladislav Hagara | Komentářů: 2
    21.5. 14:00 | Nová verze

    Vývojáři Wine oznámili vydání verze 2.0 knihovny vkd3d pro překlad volání Direct3D na Vulkan. Přehled novinek na GitLabu.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (12%)
     (8%)
     (2%)
     (14%)
     (31%)
     (4%)
     (6%)
     (3%)
     (16%)
     (26%)
    Celkem 1698 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Dotaz: GTK socket

    28.7.2012 19:26 mika_hakkinen | skóre: 7 | olbramkostel
    GTK socket
    Přečteno: 407×

    Ahoj, potřeboval bych do mé aplikace vložit jinou aplikaci, třeba xterm. Píši v pythonu a používám GTK. GTK má na to metodu socket, pres kterou lze vlozit jinou aplikaci Na netu jsem našel spousty návodů jak to udělat. Problém je ten, že již do vytvořené aplikace, kde použivám gtk.DrawingArea, nemůžu použít gtk.Socket. Mám to napsané takhle:

     

    self.window = gtk.Window()

    socket = gtk.Socket()

    gtk.gdk.threads_init()

    self.window.resize(320,240)

    self.window.connect("delete_event", self.delete_event)

    self.window.connect("destroy", self.destroy)

    self.window.show_all() self.darea = gtk.DrawingArea()

    self.darea.connect("expose-event", self.menu_manager)

    self.window.add(self.darea) #zde je problem GtkWarning: Attempting to add a widget with type GtkSocket to a GtkWindow, but as a #GtkBin subclass a GtkWindow can only contain one widget at a time; it already contains a widget of type #GtkDrawingArea

    self.window.add(socket)

    self.window.show_all()

    xid = str(socket.get_id())

    print xid - pak nekde jinde zavolam xterm s parametrem xid a mel by se ukazat.

     

     

    pak kdyz zakomentuji radek, ktery prida DrawingArea, tak to funguje dobre. diky za tip

    Odpovědi

    28.7.2012 20:11 chrono
    Rozbalit Rozbalit vše Re: GTK socket
    A prečo majú byť na tom istom mieste dva elementy?
    29.7.2012 08:41 mika_hakkinen | skóre: 7 | olbramkostel
    Rozbalit Rozbalit vše Re: GTK socket
    Pouzit dva elementy neni podminkou. Jen to nedokazi vymyslet tak, aby bud gtk.socket byl v gtk.drawingarea. nebo naopak. idealni by byl v gtk.drawingarea prostor pro vlozeni toho gtk.socket.

    diky za nakopnuti
    29.7.2012 14:33 l4m4
    Rozbalit Rozbalit vše Re: GTK socket
    GtkDrawingArea není kontejner, takže to nejde. Za chvíli bude někdo chtít strkat GtkSocket do scrollbarů...

    Buď použij kontejner, který bude obsahovat GtkDrawingArea a GtkSocket. Nebo namísto GtkDrawingArea použij GtkLayout.

    GtkDrawingArea je celkově takový widget na nic, oproti vytvoření nového jednoduchého widgetu se ušetří trochu kódu, u složitějšího se neušetří nic nebo nic, co by stálo za řeč.
    29.7.2012 20:31 mika_hakkinen | skóre: 7 | olbramkostel
    Rozbalit Rozbalit vše Re: GTK socket
    Tak po dni badani jsem na nic neprisel. DrawingArea jsem nahradil za Layout. To bylo bez potizi. Ale jak vlozit do Gtk.Layout ten Gtk.socket nevim. Mam to napsane takhle:

    self.layout = gtk.Layout(None, None)

    self.layout.set_size(320,240)

    self.layout.put(self.socket,10,10)

    self.layout.put(self.darea,0,0)

    self.window.add(self.layout)

    a kdyz to spustim zadna chyba se neobjevi. A gtk.socket vypise XID, tak to jakoby funguje, ale nezobrazuje. Nekde jsem nasel, ze se prvne musi nastavit velikost, ale gtk.socket nic takoveho nema.

    uz tedy nevim
    29.7.2012 20:50 l4m4
    Rozbalit Rozbalit vše Re: GTK socket
    Nahradit je nahradit. Kreslit můžeš přímo na ten Layout.
    import gtk
    
    window = gtk.Window()
    window.connect('destroy', gtk.main_quit)
    gtk.gdk.threads_init()
    window.resize(320,240)
    layout = gtk.Layout()
    window.add(layout)
    
    socket = gtk.Socket()
    socket.set_size_request(200, 100)
    layout.put(socket, 40, 40)
    
    window.show_all()
    xid = str(socket.get_id())
    print(xid)
    
    gtk.main()
    
    Akorát mi v tom xtermu nefunguje vstup z klávesnice, a to ani když explicitně přidám key-press and key-release eventy a nastavím, že může mít keyboard focus. S tím nevím, co dělat, Socket/Plug jsem nikdy v praxi nepouži...
    30.7.2012 17:21 mika_hakkinen | skóre: 7 | olbramkostel
    Rozbalit Rozbalit vše Re: GTK socket
    tak uz to funguje, pomohlo set_size_request.
    Pavel Stárek avatar 30.7.2012 11:38 Pavel Stárek | skóre: 43 | blog: Tady bloguju já :-) | Kolín
    Rozbalit Rozbalit vše Re: GTK socket
    Nevím, školy nemám, ale asi takhle: http://faq.pygtk.org/index.py?req=show&file=faq19.015.htp Po spuštění xtermu, je potřeba zjistit jeho window id a to pak zadat tomu socketu.
    Kdo chce, hledá způsob; kdo nechce, hledá důvod.
    Pavel Stárek avatar 30.7.2012 11:40 Pavel Stárek | skóre: 43 | blog: Tady bloguju já :-) | Kolín
    Rozbalit Rozbalit vše Re: GTK socket
    Á pardon, ten xterm a jeho window id se ti zřejmě vytváří. Takže má odpověď je zcela irelevantní :-)
    Kdo chce, hledá způsob; kdo nechce, hledá důvod.
    2.8.2012 21:19 mika_hakkinen | skóre: 7 | olbramkostel
    Rozbalit Rozbalit vše Re: GTK socket
    Jeste bych potreboval do toho gtk.socket pridat treba tlacitko. diky
    2.8.2012 21:31 chrono
    Rozbalit Rozbalit vše Re: GTK socket
    Prečo práve do toho objektu? Nemôže byť vedľa neho?
    3.8.2012 15:25 mika_hakkinen | skóre: 7 | olbramkostel
    Rozbalit Rozbalit vše Re: GTK socket
    bohuzel to je design aplikace. Stacilo by, kdyby to mohl byt popup obrazek, ktery by byl uplne nad vsemi widgety. diky za tip
    3.8.2012 15:34 chrono
    Rozbalit Rozbalit vše Re: GTK socket
    Nenapadá mi zmysluplné využitie niečoho takého, každopádne môžeš vyskúšať dať GtkSocket a aj ten obrázok do GtkFixed.
    6.8.2012 20:07 mika_hakkinen | skóre: 7 | olbramkostel
    Rozbalit Rozbalit vše Re: GTK socket
    jeste bych potreboval poradit. Potreboval bych tem widgetum nastavit ruzne pruhlednost a prenaset je do popredi a pozadi. diky
    Josef Kufner avatar 7.8.2012 18:34 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: GTK socket
    Obsah socketu je samostatné okno a pokud ho chceš překrýt něčím v obalujícím okně, máš smůlu a bude to pod socketem. Na průhlednost a podobné vychytávky zapomeň (leda by jsi se chtěl patlat s xlib, ale to nechceš).

    Pokud můžeš upravit vestavovanou aplikaci, udělej z toho knihovnu a/nebo client-server architekturu.

    Pokud nemůžeš, tak dej svoje widgety vedle a nějak to zamaskuj.
    Hello world ! Segmentation fault (core dumped)

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.