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
#!/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.htmlP.s Neprogramujem iba lepim kod, tak prosim trpezlivost so mnou.
Vyriesene.
Teraz som nasiel
https://stackoverflow.com/questions/769175/persistent-windows-in-pygtkkde 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.