Python - Gebruikersinterfaces, deel 2

Inhoudsopgave
Zoals we in het eerste deel van de tutorial konden zien, is het maken van een venster vrij eenvoudig, in dit tweede deel gaan we een beetje verder door dieper in te gaan op wat we als basis hebben achtergelaten en de code uit te breiden om iets te maken met een hogere graad van complexiteit.
Een knop toevoegen
Zodra we het venster verlaten, moeten er meer elementen in zitten en een van de meest elementaire maar zeer belangrijke is de knop, om deze toe te voegen gaan we toevoegen btn = wx.Knop (winnen) in onze code, laten we eens kijken:
 import wx app = wx.App () win = wx.Frame (Geen) btn = wx.Button (win) win.Show () app.MainLoop () 

Zoals we kunnen zien, is het praktisch dezelfde code als hierboven, maar we nemen de instructie op die de knop toevoegt, in de afbeelding kunnen we het resultaat zien:

Het resultaat is niet erg esthetisch, aangezien de knop het hele venster beslaat, maar we moeten niet ontmoedigd worden. In de volgende sectie zullen we zien hoe we dit kunnen regelen om een ​​aangenamer resultaat voor het oog te genereren.
Labels en posities
In het vorige gedeelte realiseerden we ons dat hoewel het heel gemakkelijk is om meer elementen toe te voegen, we ze moeten kunnen distribueren zodat het op grafisch niveau coherent is met wat we willen bereiken, hiervoor kunnen we labels, maten en posities vaststellen voor de elementen in het venster.
We gaan de volgende code zien met het bijbehorende resultaat, zodat we het proces op een betere manier kunnen analyseren en begrijpen.
 import wx app = wx.App () win = wx.Frame (Geen,) loadButton = wx.Button (win, label = 'Open') saveButton = wx.Button (win, label = 'Opslaan') win.Show ( ) app.MainLoop () 

Zoals we kunnen zien, plaatsen we een waarde in de titel van het venster, als argument voor de constructor bij het instantiëren, dan maken we twee knoppen en aan elk voegen we een label of label toe, we kunnen het resultaat zien, hoewel het misschien niet zijn wat we verwachten:

We kunnen inderdaad zien dat iets er niet goed uitziet en dat een van de knoppen niet zichtbaar is, dit komt omdat we de positie niet specificeren, daarom is het verborgen onder de andere knop.
We gaan dit corrigeren met de volgende code:
 import wx app = wx.App () win = wx.Frame (Geen ,, size = (410, 335)) win.Show () loadButton = wx.Button (win, label = 'Open', pos = (225, 5), grootte = (80, 25)) saveButton = wx.Button (win, label = 'Save', pos = (315, 5), size = (80, 25)) bestandsnaam = wx.TextCtrl (win, pos = (5, 5), maat = (210, 25)) inhoud = wx.TextCtrl (win, pos = (5, 35), maat = (390, 260), stijl = wx.TE_MULTILINE | wx.HSCROLL) app .Hoofdlus () 

Met deze code, naast het corrigeren van de details met de posities van de knoppen, profiteren we van en voegen we enkele tekstbesturingselementen toe, laten we in de volgende afbeelding zien hoe alles eruit zou zien.

De zaken zijn al in betere staat, maar nu vragen we ons af wat we met dit venster gaan doen, want in de volgende sectie gaan we enkele functionaliteiten definiëren.
Evenementafhandeling
Door dit type benadering te gebruiken om onze programma's te maken, verandert de visie van wat we doen ook een beetje, in dit geval en de acties die het programma uitvoert, zullen we gebeurtenissen noemen, deze gebeurtenissen worden geactiveerd door gebruikersacties zoals klikken op een knop, dus hebben we de code een beetje aangepast om deze gebeurtenissen op te nemen:
loadButton.Bind (wx.EVT_BUTTON, laden)

Die regel maakt ons een unie tussen de laadfunctie en het element, in dit geval een knop, dus we weten al dat we eerst een functie moeten definiëren en deze vervolgens moeten toewijzen in een gebeurtenis die aan een element is gekoppeld.
Laten we de laatste code bekijken:
 import wx def load (event): file = open (filename.GetValue ()) content.SetValue (file.read ()) file.close () def save (event): file = open (filename.GetValue (), ' w ') file.write (contents.GetValue ()) file.close () app = wx.App () win = wx.Frame (Geen ,, size = (410, 335)) bkg = wx.Panel (win) loadButton = wx.Button (bkg, label = 'Open') loadButton.Bind (wx.EVT_BUTTON, load) saveButton = wx.Button (bkg, label = 'Opslaan') saveButton.Bind (wx.EVT_BUTTON, opslaan) bestandsnaam = wx.TextCtrl (bkg) content = wx.TextCtrl (bkg, style = wx.TE_MULTILINE | wx.HSCROLL) hbox = wx.BoxSizer () hbox.Add (bestandsnaam, proportie = 1, vlag = wx.EXPAND) hbox.Add (loadButton, proportion = 0, flag = wx.LEFT, border = 5) hbox.Add (saveButton, proportion = 0, flag = wx.LEFT, border = 5) vbox = wx.BoxSizer (wx.VERTICAL) vbox.Add (hbox, proportie = 0, vlag = wx.EXPAND | wx.ALL, rand = 5) vbox.Add (inhoud, proportie = 1, vlag = wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT, border = 5) bkg.SetSizer (vbox) win.Toon () app.MainLoop () 

Wat dit programma doet, is tekstbestanden bewerken op een vrij eenvoudige manier, maar het zorgde ervoor dat we veel functies en toepassingen moesten gebruiken.
Hiermee ronden we de tutorial af, wetend hoe we a . moeten gebruiken gereedschapskist gebruikersinterface, raden we u aan om de verschillende bestaande toolkits te onderzoeken, inclusief de toolkits die exclusief zijn voor een bepaald besturingssysteem, en onthoud dat elke tool af en toe nuttig voor ons zal zijn.Vond je deze tutorial leuk en hielp je hem?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave