⬅ Wróć do spisu treści

Obiekty

Przykład 11.2a:wx_obj (Kod do uruchomienia lokalnie na komputerze)


#!/usr/bin/env python
import wx

# tworzymy obiekt aplikacji graficznej
app = wx.App(0)
# obiekt okna (klasa Frame)
frame = wx.Frame(None, -1, "Tytul okna")
frame.Show(True)

# panel = obiekt wnetrza okna
panel = wx.Panel(frame, -1)
# obiekt etykiety w oknie
label1 = wx.StaticText(panel, -1, "Etykieta")

# umieszczamy panel w oknie
frame.panel = panel

# okno w aplikacji
app.SetTopWindow(frame)
app.MainLoop()

Objaśnienie.

Aplikacja graficzna wykonuje pętlę (MainLoop) czekając na działania ze strony użytkownika. Poleceniem SetTopWindow wyświetlamy okno (frame) w którym ma zachodzić interakcja. Wnętrze okna nazywa się panelem i jest obiektem typu wx.Panel. Na panelu umieszcza się kontrolki (ang. widgets), które są odpowiedzialne za poszczególne elementy wizualne. Tu użyliśmy kontrolki wx.StaticText do umieszczenia na panelu etykiety.

Zauważmy, że biblioteka wx stosuje trzy rodzaje powiązania obiektów ze sobą. Może to następować poprzez parametr przy tworzeniu obiektu (jak w instrukcji wx.Panel(frame, -1) – podajemy w parametrze okno dla którego tworzymy panel). Gdy to powiązanie jest zmienne – jak w przypadku otwartego okna – stosujemy odrębną funkcję – jak w instrukcji app.SetTopWindow(frame). Trzecim sposobem jest bezpośrednia zmiana własności. Na przykład okno ma jeden panel dostępny przez własność o nazwie panel. Możemy tą własność ustawiać jak w instrukcji frame.panel = panel (zauważmy, że frame.panel i panel to dwie różne zmienne).

Przykład 11.2b: wx_inherit (Kod do uruchomienia lokalnie na komputerze)


#!/usr/bin/env python

import wx

class TestApp(wx.App):

    def OnInit(self):
        frame = wx.Frame(None, -1, "Tytul okna")
        frame.Show(True)
        panel = wx.Panel(frame, -1)
        label1 = wx.StaticText(panel, -1, "Etykieta")
        frame.panel = panel
        self.SetTopWindow(frame)
        return True

app = TestApp(0)
app.MainLoop()
    

Objaśnienie

Jest to ten sam przykład, co 9.2a, ale wszystkie operacje dotyczące aplikacji graficznej zostały zaimplementowane w metodzie OnInit klasy pochodnej do wx.App. Należy zwrócić uwagę na fakt, że zamiast do zmiennej app, wewnątrz klasy odwołujemy się do parametru self – pod którym kryje się oczywiście odwołanie do obiektu aplikacji. W analogiczny sposób można tworzyć klasy pochodne do innych elementów graficznych.

Wersja przeglądarkowa (Brython DOM)

Poniżej znajduje się ten sam program, ale zamiast wxPython używa obiektów przeglądarki (DOM). Możesz go uruchomić bezpośrednio tutaj!


Tu pojawi się wygenerowany interfejs...