Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.

Autor Téma: Gtk.windows python, nastavenie okna. [Vyriesene]  (Přečteno 1588 krát)

TIBOR

  • Guru
  • *****
  • Příspěvků: 6216
  • Karma: +452/-21
  • Som uzivatel linuxovej distribucie, som linuxak?
    • Zobrazit profil
Gtk.windows python, nastavenie okna. [Vyriesene]
« kdy: 20 Září 2019, 15:20:23 »
Zdravim.
Hladam a neviem najst ci existuje parameter na nastavenie okna v gtk.windows python ktory by nastavil okno tak aby sa dalo umiestnit pod panel. Konkretne to skusam na mate ale asi to plati pre kazdy panel.
Nasiel som ako oknu vypnut dekoracie, ako ho umiestnit pod vsetky ostatne okna a nezobrazovat ho v panely v zozname okien.
Snazim sa spravit z toho okna nieco ako ten panel alebo ako conky s parametrom "own_window_type="dock"". To mu umoznuje podsunut ho pod panel. Mne sa to nedari a pri presune okna na poziciu 0,0 ho nastavi na spodok panelu.(nie pod neho) Nefunguje ani zaporne cislo.
Na obrazku, to sede vlavo hore je panel asi po prve cervene lomitko. Potom sa uz zobrazuje conky. Ta biela plocha pod tym je to python okno ktore by som chcel dostat na poziciu ako je conky.
Neriesil to uz niekto?
Konkretny kod na ktorom sa to snazim spravit je
Kód: [Vybrat]
#!/usr/bin/python

import cairo
import datetime
import gobject
import gtk
import math
import time

class ClockFace(gtk.DrawingArea):
    def __init__(self):
        gtk.DrawingArea.__init__(self)
        self.connect("expose_event", self.expose)
        gobject.timeout_add(1000, self.on_timeout)
       
    def expose(self, widget, event):
        self.context = widget.window.cairo_create()
        self.context.rectangle(event.area.x, event.area.y, event.area.width, event.area.height)
        self.context.clip()
        self.draw(self.context)
        return False

#-----------------------------------------------cas pre obnovu grafiky ------------------------------------------

    def on_timeout(self):
        win = self.get_window()
        plocha = self.get_allocation()
        win.invalidate_rect(plocha, False)
        return True

    def draw(self, context):
------------------------------- cast pre vykreslovany kod --------------------



def main():
    window = gtk.Window()
    clock = ClockFace()

    window.set_title("Info panel")                #nazov okna
    window.set_size_request(1600, 20)             #velkost okna
    #window.set_position(gtk.WIN_POS_CENTER)      #umiestnenie okna
    window.set_decorated(True)                    #dekoracia okna
    window.set_keep_below(False)                  #udrziava okno dole, pod ostatnymi
    window.set_skip_taskbar_hint(False)           #nezobrazuje okno v zozname na panele
    window.move(0, 0)                             #presunie okno

    window.add(clock)
    window.connect("destroy", gtk.main_quit)
    window.show_all()

    gtk.main()

if __name__ == '__main__':
    main()
Kod je prevzaty z tohto navodu
https://amgcomputing.blogspot.com/2011/11/analog-clock-in-pygtk.html

P.s Neprogramujem iba lepim kod, tak prosim trpezlivost so mnou.


Vyriesene. :D

Teraz som nasiel
https://stackoverflow.com/questions/769175/persistent-windows-in-pygtk
kde je odpoved. Parameter "window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)".
Je to sice agresivnejsie ako som chcel a prekryje to aj panel ale da sa nastavit mensia velkost okna a panel nechat odokryty.
« Poslední změna: 20 Září 2019, 19:39:12 od TIBOR »
Asus X751LB-TY014H Ubuntu 18.04 XX 64bit - Mate.
Linus, Lajnas, Línus, Luínus, Lajnus a je mi naozaj jedno, ako ľudia vyslovujú moje meno. Ale "Linux" je vždy "Linux". LINUS TORVALDS, tvorca Linuxového jadra.(V dokumente Revolution OS)