Najprostszy program w Pyglet
Poniżej najprostszy przykład programu w Pyglet
pod Python 2.7 i 3.x.
Program oprócz wyświetlenia okienka nic nie robi ale to jest minimum jakie potrzeba do uruchomienia programu.
import pyglet
pyglet.window.Window()
pyglet.app.run()
Najpierw importujemy moduł pyglet
.
Potem tworzymy główne okno Window()
, które pojawia się od razu.
Na koniec uruchamiamy funkcję run()
, która wykonuje się aż do zamknięcia okna
(więc instrukcje umieszczone po tej funkcji wykonają się dopiero po zakmnięciu okna) i zapewnia ona obsługę wszelkich zdarzeń zachodzących w oknie - rozpoznawanie ruchu myszki, kliknięć przycisków, kliknięć klawiszy - i przesyłanie tych informacji do elementów (widgetów) wewnątrz okna. Odpowiedzialna jest też za wywoływnaie funkcji przypisanych widgetom przez programistę (np. rekcja na kliknięcie przycisku w oknie) jak i tych przypisanych domyślnie (np. rysowanie widgetów). Wszystko się to dzieje w pętli, która chodzi w nieskończoność.
W Tkinter ta funkcja nazywa się jest
mainloop()
czyligłówna pętla
.
W PyGame nie ma takiej funkcji i trzeba samemu ją napisać.
Zwykle ma ona postać nieskończonej pętli obsługującej zdarzenia i potocznie nazywa się właśniemainloop
.
Bez tej funkcji nie da się nawet zamknąć okna.
Stworzone okno warto przypisać do zmiennej aby można było robić z nim coś więcej. W poniższym do okna zostanie przypisana funkcja, która będzie wypisywać w terminalu informacje o zdarzeniach jakie zdarzyły się w oknie. Może to być bardzo przydatne w zapoznaniu się z instniejącymi zdarzeniami.
import pyglet
window = pyglet.window.Window()
window.push_handlers(pyglet.window.event.WindowEventLogger())
pyglet.app.run()
Można jednak przypisać takie rzeczy jak wielkość i tytuł okna
import pyglet
window = pyglet.window.Window()
window.set_caption("Pyglet Minimum")
window.set_size(300,200)
pyglet.app.run()
Wartości można podawać także jako parametry przy tworzeniu obiektu a potem ewentualnie zmieniać jak powyżej.
Są też takie, które można podać jedynie przy tworzeniu obiektu i potem możne jedynie odczytac ich stan ale nie można już ich zmienić np. resizable
.
import pyglet
window = pyglet.window.Window(300, 200,
caption="Pyglet Minimum",
resizable=True
)
print "Tytul:", window.get_caption()
print "Rozmiar:", window.get_size()
print "Czy rozciagalne:", window.resizable
pyglet.app.run()
Wartość visible
warto podać już przy tworzeniu jeśli chcemy aby już na starcie było niewydoczne.
import pyglet
window = pyglet.window.Window(visible=False)
pyglet.app.run()
W powyższej postaci okno nie pojawi się i nie będzie możliwości jego pokazania i zamknięcia.
Pyglet pozwala stworzyć kilka okien (czego nie potrafi PyGame)
import pyglet
window1 = pyglet.window.Window(caption='Okno #1')
window1.set_location(0, 0)
window2 = pyglet.window.Window(caption='Okno #2')
window2.set_location(300, 300)
pyglet.app.run()
Dostępne metody i argumenty okna można zobaczyć w dokumentacji: Window Class
lub na szybko podejrzeć dzięki dir()
import pyglet
window = pyglet.window.Window()
print dir(window)
pyglet.app.run()
lub bardziej czytelnie umieszczając w osobnych liniach dzięki join()
import pyglet
window = pyglet.window.Window()
print "\n".join(dir(window))
pyglet.app.run()
ewentualnie bez tworzenia okna
import pyglet
print '\n'.join(dir(pyglet.window.Window))
