Tworzenie widżetów Superkaramby

Widżety Superkaramby znajdziemy w katalogu .kde/share/apps/superkaramba/themes/. Każdy widżet składa się z katalogu oraz pliku pythona i pliku .theme - wszystkie o tej samej nazwie. Plik .theme określa początkową lokację widżetu, czas jego odświerzania oraz potencjalnie inne dane. Plik pythona zawiera wykonywany kod. W katalogu mogą być inne pliki wykorzystywane przez dany widżet.

Tworzenie Widgetu

- Stwórz katalog test (w dowolnym miejscu)
- Stwórz plik test.py i test.theme w tym katalogu
- Edytuj plik test.theme i dodaj:
KARAMBA X=200 Y=200 W=351 H=251 INTERVAL=1000 LOCKED=true
Gdzie X, Y - lokacja widżetu na ekranie, W, H - wysokość i szerokość widżetu, INTERVAL - interwał aktualizacji widżetu, LOCKED - wartość true blokuje jego przesuwanie, false je umożliwia. Najprostszy kod test.py wyglądałby tak:
# -*- coding: utf-8 -*-
import karamba

# wywoływane przy uruchamianiu widgetu
def initWidget(widget):
	pass

# wywoływane za każdym razem odświerzenia
def widgetUpdated(widget):
	pass

# wywoływane po kliknięciu
def widgetClicked(widget, x, y, button):
	pass

# wywoływane po ruchu myszy
def widgetMouseMoved(widget, x, y, button):
	pass

print 'Załadowano Widget'
Następnie z konsoli uruchom superkarambę (polecenie superkaramba). Otwórz lokalny motyw wskazując na stworzony plik theme. Widget powinien zostać załadowany a w konsoli powinien pojawić się tekst "Załadowano Widget". Gdy znamy już podstawy możemy przejść do tworzenia prawdziwych widgetów.

Tworzenie widżetów Superkaramby

Podstawą będzie dokumentacja API na stronie projektu. Teraz dodamy do naszego widżetu tło i tekst:
# -*- coding: utf-8 -*-
import karamba

def initWidget(widget):
	# wyświetlenie grafiki tlo.png
	karamba.createImage(widget, 1, 1, 'tlo.png')
	# stworzenie napisu
	napis = karamba.createText(widget, 10, 10, 150, 30, 'Test')
	# zwiększenie rozmiaru tekstu
	karamba.changeTextSize(widget, napis, 20)

def widgetUpdated(widget):
	pass

def widgetClicked(widget, x, y, button):
	pass

def widgetMouseMoved(widget, x, y, button):
	pass

print 'Załadowany'
Grafikę umieszczamy w tym samym katalogu co kod widżetu. Po ponownym załadowaniu (może wymagać restartu superkaramby) powinniśmy zobaczyć użytą grafikę jak i napis.
Teraz dodamy trochę interakcji:
# -*- coding: utf-8 -*-
import karamba
from time import time

def initWidget(widget):
	global napis
	karamba.createImage(widget, 1, 1, 'tlo.png')
	napis = karamba.createText(widget, 10, 10, 150, 30, 'Test')
	karamba.changeTextSize(widget, napis, 20)

def widgetUpdated(widget):
	karamba.changeText(widget, napis, str(time()))

def widgetClicked(widget, x, y, button):
	pass

def widgetMouseMoved(widget, x, y, button):
	pass

print 'Załadowany'
Dodaliśmy do widgetUpdated metodę changeText zmieniającą wartość podanego obiektu Text (u nas "napis"). Zmieniamy go na bierzący znacznik czasu - otrzymujemy coś w rodzaju zegara jako że widgetUpdated wywoływane jest co określony w pliku .theme okres czasu.
superkar
RkBlog

Podstawy Pythona, 14 July 2008

Comment article
Comment article RkBlog main page Search RSS Contact