Python - interfejsy użytkownika, część 2

Spisie treści
Jak widzieliśmy w pierwszej części samouczka, tworzenie okna jest dość proste, w drugiej części przejdziemy nieco dalej, zagłębiając się w to, co pozostawiliśmy jako bazę i rozszerzając kod, aby stworzyć coś z wyższy stopień złożoności .
Dodaj przycisk
Po wyjściu z okna musi być w nim więcej elementów i jednym z podstawowych, ale bardzo ważnym jest przycisk, aby go dodać dodamy btn = wx.Przycisk (wygraj) w naszym kodzie zobaczmy:
 import wx app = wx.App () win = wx.Frame (Brak) btn = wx.Button (win) win.Show () app.MainLoop () 

Jak widać jest to praktycznie ten sam kod co powyżej, jednak dołączamy instrukcję dodującą przycisk, na obrazku widzimy wynik:

Wynik nie jest zbyt estetyczny, ponieważ przycisk zajmuje całe okno, ale nie należy się zniechęcać, w następnej sekcji zobaczymy, jak to kontrolować, aby wygenerować bardziej przyjemny dla oka efekt.
Etykiety i pozycje
W poprzednim rozdziale zdaliśmy sobie sprawę, że choć bardzo łatwo jest dodawać kolejne elementy, to musimy mieć możliwość ich rozmieszczenia tak, aby na poziomie graficznym było spójne z tym, co chcemy osiągnąć, do tego możemy ustalić etykiety, rozmiary i pozycje dla elementów w oknie.
Zobaczymy poniższy kod z odpowiadającym mu wynikiem, abyśmy mogli lepiej przeanalizować i zrozumieć proces.
 import wx app = wx.App() win = wx.Frame (Brak,) loadButton = wx.Button (win, label = 'Open') saveButton = wx.Button (win, label = 'Save') win.Show ( ) app.Pętla główna () 

Jak widać umieszczamy wartość w tytule okna, jako argument dla konstruktora podczas tworzenia instancji, następnie tworzymy dwa przyciski i do każdego dodajemy etykietę lub etykietę, możemy zobaczyć wynik, chociaż może nie bądź tym, czego oczekujemy:

Rzeczywiście widzimy, że coś nie wygląda dobrze i jeden z przycisków nie jest widoczny, dzieje się tak dlatego, że nie określamy jego pozycji, dlatego jest schowany pod drugim przyciskiem.
Poprawimy to za pomocą następującego kodu:
 import wx app = wx.App() win = wx.Frame (Brak ,, size = (410, 335)) win.Show() loadButton = wx.Button (win, label = 'Open', pos = (225, 5), size = (80, 25)) saveButton = wx.Button (win, label = 'Save', poz = (315, 5), size = (80, 25)) filename = wx.TextCtrl (win, poz = (5, 5), size = (210, 25)) content = wx.TextCtrl (win, poz = (5, 35), size = (390, 260), style = wx.TE_MULTILINE | wx.HSCROLL) app .Główna pętla () 

Za pomocą tego kodu, oprócz poprawiania szczegółów z pozycjami przycisków, wykorzystujemy i dodajemy kilka kontrolek tekstowych, zobaczmy na poniższym obrazku, jak by to wszystko wyglądało.

Sprawy są już w lepszej kondycji, jednak teraz zadajemy sobie pytanie, co zrobimy z tym oknem, ponieważ w następnym podrozdziale zdefiniujemy kilka funkcjonalności.
Obsługa zdarzeń
Stosując tego typu podejście do tworzenia naszych programów, wizja tego, co robimy, również nieco się zmienia, w tym przypadku i akcje, które wykonuje program, będziemy nazywać zdarzeniami, zdarzenia te są wyzwalane przez akcje użytkownika, takie jak kliknięcie przycisku, więc zmodyfikowaliśmy nieco kod, aby uwzględnić te zdarzenia:
loadButton.Bind (wx.EVT_BUTTON, wczytaj)

Ta linia tworzy nam unię między funkcją ładowania a elementem, w tym przypadku przyciskiem, więc już wiemy, że musimy najpierw zdefiniować funkcję, a następnie przypisać ją w zdarzeniu powiązanym z elementem.
Zobaczmy ostateczny kod:
 import wx def load (event): file = open (nazwapliku.GetValue()) content.SetValue (file.read()) file.close() def save (event): file = open (nazwapliku.GetValue()), ' w ') file.write (contents.GetValue ()) file.close () app = wx.App () win = wx.Frame (Brak ,, size = (410, 335)) bkg = wx.Panel (win) loadButton = wx.Button (bkg, label = 'Open') loadButton.Bind (wx.EVT_BUTTON, load) saveButton = wx.Button (bkg, label = 'Save') saveButton.Bind (wx.EVT_BUTTON, zapisz) filename = wx.TextCtrl (bkg) content = wx.TextCtrl (bkg, style = wx.TE_MULTILINE | wx.HSCROLL) hbox = wx.BoxSizer () hbox.Add (nazwa pliku, proporcja = 1, flaga = wx.ROZWIŃ) hbox.Add (loadButton, proporcjonalna = 0, flaga = wx.LEFT, border = 5) hbox.Add (saveButton, proporcjonalna = 0, flaga = wx.LEFT, border = 5) vbox = wx.BoxSizer (wx.VERTICAL) vbox.Add (hbox, proporcja = 0, flaga = wx.ROZSZERZ | wx.WSZYSTKO, obramowanie = 5) vbox.Add (zawartość, proporcja = 1, flaga = wx.ROZSZERZ | wx.LEWO | wx.DÓŁ | wx.PRAWO, obramowanie = 5) bkg.SetSizer (vbox) win.Show () app.MainLoop () 

Program ten w dość prosty sposób edytuje pliki tekstowe, jednak zmusił nas do korzystania z wielu funkcji i aplikacji.
Na tym kończymy samouczek, wiedząc, jak używać a zestaw narzędzi interfejs użytkownika, zachęcamy do zbadania różnych istniejących zestawów narzędzi, w tym tych, które są przeznaczone wyłącznie dla konkretnego systemu operacyjnego, pamiętając, że każde narzędzie będzie dla nas czasami przydatne.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave