Razvoj aplikacija s Pythonom i wxFormBuilder

Sadržaj

Programski jezik Python omogućuje usvajanje različitih knjižnica i okvira za razvoj grafičkih sučelja. Neki su Tinker, Wxwidget i QT, platforma na kojoj smo vidjeli tutoriale:

  • Aplikacije za više platformi s Python, PyQT i QT Desginer 5
  • Aplikacije sa Sqlite Database, PyQT i QT Desginer.

U ovom vodiču ćemo vidjeti kako razviti grafička sučelja s WxWidgetom i alatom za projektiranje wxFormBuilder. wxFormBuilder je aplikacija za dizajn grafičkih korisničkih sučelja, besplatna je i otvorenog koda omogućuje korištenje knjižnica wxWidgets, široko se koristi za razvoj multiplatformnih aplikacija.

wxFormBuilder je vizualni razvojni alat.Velika prednost je što može generirati kôd u C ++, Python, PHP, Lua i XRC dok se dizajnira. Radi na Windows, Linux i Mac OS.

Za ovaj vodič ćemo izvršiti instalaciju u Linuxu i na virtualnom stroju s VirtualBoxom i Windows 7, kako bismo dokazali da možemo razviti višeplatformnu aplikaciju, na isti način na koji bismo mogli instalirati u Linux i imati virtualni stroj s Linuxom.

Morat ćemo instalirati sljedeće alate:

PitonTo je programski jezik na visokoj razini, glavni cilj pythona je olakšati čitljivost koda i omogućuje programerima razvoj aplikacija u manje redaka koda u usporedbi s programskim jezicima kao što su C ++, C # ili Java.

Jedna od prednosti Pythona je ta što podržava više programskih paradigmi, poput objektno orijentiranog, imperativnog i funkcionalnog ili proceduralnog programiranja. Python možemo preuzeti sa službene web stranice.

wxPythonTo je više platformi, može raditi na Windows, Linux i Mac OS bez izmjena. Rezultat dizajna sučelja je izvorni izgled aplikacije, ovisno o operativnom sustavu na kojem se izvodi.

To je skup knjižnica koje omogućuju prijenos i korištenje grafičke knjižnice wxWidgets pomoću programskog jezika Python. Knjižnicu wxWidgets karakterizira više platformi.

Može se preuzeti sa službene web stranice WxPython, u Linuxu dolazi u spremišta ili se može dodati

wxFormBuilderTo je besplatni IDE za više platformi i otvorenog koda. Koristi se za projektiranje grafičkog sučelja GUI wxWidgets ili u ovom slučaju wxPython, omogućuje stvaranje aplikacija na više platformi. Kao i Qt Designer, alat wxFormBuilder koristi se za vizualni razvoj.

wxFormbuilder omogućuje generiranje koda u C ++, Python, PHP, Lua i XRC kodu. Kôd se stvara kako mi dizajniramo.

Možemo ga preuzeti sa službene web stranice, moramo instalirati verziju višu od 3.4 koja podržava sve gore navedene jezike.

Primjeri aplikacija s wxPython i wxFormBuilder
U ovom vodiču ćemo razviti aplikaciju pod Linuxom, a zatim ćemo je pokrenuti i u sustavu Windows. U Linuxu python je već instaliran pa ćemo instalirati wxPython i wxFormbuilder, iz prozora terminala zapisujemo sljedeću naredbu:

 sudo add-apt-repository -y ppa: wxformbuilder / wxwidgets sudo apt-get update sudo apt-get install libwxgtk3.0-0 libwxgtk-media3.0-0 sudo add-apt-repository -y ppa: wxformbuilder / release sudo apt -nabavite ažuriranje sudo apt-get install wxformbuilder
Zatim moramo dodati wxpython kao varijablu okruženja da bismo ga mogli koristiti iz bilo kojeg direktorija:
 izvoz PYTHONPATH = "$ PYTHONPATH": / usr / lib / python2.7 / dist-packages / wx-2.8-gtk2-unicode /
Zatim otvorimo wxFormbuilder iz glavnog izbornika:

wxFormBuilder predstavlja radnu površinu s lijevim stupcem na kojem će se nalaziti projekt ili zaslon i komponente koje koristimo, u sredini kartica za dizajn i kartica za svaki jezik, s desne strane imat ćemo svojstva projekta i komponente koje koristimo.

Prvo što ćemo morati konfigurirati bit će projekt, za to kliknemo na naziv projekta, a zatim idemo na svojstva gdje ćemo dodijeliti ime i jezik koji ćemo koristiti.

Zatim idemo na karticu Obrazac i dodamo obrazac koji će biti spremnik zaslona.

Zatim iz svojstava možemo izmijeniti naziv obrasca kojem dodjeljujemo MyForm i naslov koji će biti Example01- VodičOsim toga, možemo izmijeniti mnoge opcije kao što su boja pozadine, veličina, vrsta prozora i mnoge druge.

Možemo otići na karticu Python i vidjeti kako se kôd generira.

Da bismo generirali kôd u datoteci, prvo moramo spremiti projekt iz izbornika Datoteka> Spremi kao, i spremamo ga kao example01.fbp

Zatim idemo na opciju izbornika Datoteka> Generiraj kôd, zatim idemo u direktorij u koji spremamo datoteku projekta i vidjet ćemo datoteku noname.py

Ova datoteka noname.py sadrži Python kôd generiran dizajnom sučelja, datoteku možemo preimenovati u example01.py

Zatim moramo dodati kôd tako da se ovaj dizajn prikaže kada se aplikacija izvrši. Da bismo to učinili, otvorimo datoteku i u nastavku dodamo sljedeći kôd, ostajući na sljedeći način:

 import wx uvoz wx.xrc klasa MyForm (wx.Frame): def __init __ (samo, roditelj): wx.Frame .__ init__ (samo, roditelj, id = wx.ID_ANY, naslov = u "Primjer01 - Vodič", pos = wx .DefaultPosition, size = wx.Size (500,300), style = wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHintsSz (wx.DefaultSize, wx.DefaultSize) self.Centre (wx.BOTH) def __del__ : Proslijedi # Kraj dizajna koda obrasca ## Kod koji prikazuje aplikaciju prilikom izvršavanja app = wx.App (False) frame = MyForm (None) frame.Show (True) app.MainLoop ()
Zatim iz prozora terminala idemo u direktorij aplikacije i izvršavamo python example01.py

Zatim idemo na wxFormbuilder i počinjemo dizajnirati zaslon. Komponente se raspoređuju po ekranu pomoću Layout -a i rešetki, u ovom slučaju ćemo odabrati vertikalni wxBoxSizer, ono što radi je podijeliti zaslon u tri reda, gdje ćemo dodati komponente.

Zatim ćemo dodati izbornik, za to idemo na karticu Izbornik / Alatna traka, prvo ćemo dodati komponentu MenuBar koja će biti glavni izbornik. Zatim ćemo hijerarhijski dodati Open Menutitem, separator i još jedan Menuitem s imenom Exit.

Možemo vidjeti da su objekti raspoređeni prema hijerarhiji gdje najviši obuhvaća najniži, možemo zamijeniti njihov položaj samo povlačenjem. Zatim idemo na karticu Podaci a mi ćemo dodati a wxGrid kontrola Kako bismo prikazali podatkovnu mrežu, za njih se postavljamo u Layout pa će se sljedeća kontrola nalaziti ispod izbornika.

Generiramo novi kôd i datoteka će se izmijeniti noname.py, možemo ga preimenovati u example02.py, dodajući izvršene promjene. Zatim bježimo iz prozora terminala pomoću naredbe:

 python example02.py

Sada ćemo wxFormbuilder i mi ćemo dodati razdjelnu traku ispod rešetke, od Zajednička kartica i odaberite komponentu wxStaticLine.

Zatim ćemo stvoriti polja za izradu detalja, za to ćemo se postaviti u Layout i dodati komponentu.

Osim dizajniranja grafičkih sučelja, možemo dodati događaje, na primjer kliknemo gumb za snimanje i odemo na karticu Događaji, tražimo vrstu događaja, u ovom slučaju OnLeftDown, pritisnite lijevu tipku miša.

U ovom slučaju upisujemo naziv funkcije koja će pozvati događaj, pri generiranju koda samo će stvoriti funkciju za nas, tada ćemo morati napisati kod s funkcionalnošću. Kad generiramo datoteku, na kraj ćemo dodati sljedeći potpuni kod:

 uvoz wx uvoz wx.xrc uvoz wx.grid ######################################## ###################################### Klasa MyFrame1 ########### ################################################# ############### klasa MyForm (wx.Frame): def __init __ (self, parent): wx.Frame .__ init__ (self, parent, id = wx.ID_ANY, title = wx. EmptyString, pos = wx.DefaultPosition, size = wx.Size (417,350), style = wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHintsSz (wx.DefaultSize, wx.DefaultSize) bSizerVer1 m_grid1 = wx.grid.Grid (self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) # Mreža self.m_grid1.CreateGrid (4, 4) self.m_grid1.EnableEditing (True) self.m_grid1.EnableGridLines ( Točno) self.m_grid1.EnableDragGridSize (False) self.m_grid1.SetMargins (0, 0) # Stupci self.m_grid1.EnableDragColMove (False) self.m_grid1.EnableDragColSize (True) self.m_grid1.SetColLabelMize1 (True) self. SetColLabel.mSize (.SetColLabelAlignment (wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Redci self.m_grid1.EnableDragRowSize (True) self.m_grid1.SetRowLabelSize (80) self.m_grid1.SetRowLabelAlignment (wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Izgled oznake # Zadane postavke ćelije .SetLignment_OPELL, w / w Zadane postavke w / wm_grid1.SetLIGNDefaultCell_FT) bSizer1.Add (self.m_grid1, 0, wx.ALL, 5) self.m_staticline4 = wx.StaticLine (self, wx.ID_ANY, wx.DefaultPozicija, , wx.LI_HORIZONTAL) bSizer1.Dodaj (self.m_staticline4, 0, wx.EXPAND | wx.ALL, 5) fgSizer1 = wx.FlexGridSizer (0, 4, 0, 0) fgSizer1.SetFlexDirection (wx.BOTH) fgSonFigner fgSizer (wx.FLEX_GROWMODE1_SPECIFIED) selfText.SelfText. (self, wx.ID_ANY, u "Proizvod", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText1.Wrap (-1) fgSizer1.Add (selfxt_, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.m_textCtrl1 = wx.TextCtrl (self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) fgSizer1.Add (selfx_text, SVE | wx.EXPAND, 5) self .m_staticText2 = w x.StaticText (self, wx.ID_ANY, u "Code", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText2.Wrap (-1) fgSizer1.Add (self.m_staticText2, 0, wx.ALL | wx. ALIGN_CENTER_VERTICAL, 5) self.m_textCtrl2 = wx.TextCtrl (self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) fgSizer1.Add (self.m_textCtrl2P, P | wx.ALLPAND | wx.ALIGN_BOTTOM, 5) self.m_staticText3 = wx.StaticText (self, wx.ID_ANY, u "Kategorija", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText3.Wrap (-1) fgSizer1. Dodaj (self. M_staticText3, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) m_comboBox1Choices = [] self.m_comboBox1 = wx.ComboBox (self, wx.ID_ANY, u "Odaberi", wx.DefaultPosition, wx.De, wx.Default ) .Add (self.m_comboBox1, 0, wx.ALL, 5) self.m_staticText4 = wx.StaticText (self, wx.ID_ANY, u "Datum unosa", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText4 . Zamotaj (-1) fgSizer1.Add (self.m_staticText4, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTE R_VERTICAL, 5) self.m_datePicker1 = wx.DatePickerCtrl (self, wx.ID_ANY, wx.DefaultDateTime, wx.DefaultPosition, wx.DefaultSize, wx.DP_DEFAULT) fgSizer1.Dodaj (self.m_xxPodatak EXPAND, 5) bSizer1.Add (fgSizer1, 1, wx.EXPAND | wx.ALL, 5) self.m_staticline3 = wx.StaticLine (self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) bSizer Dodaj (self.m_staticline3, 0, wx.EXPAND | wx.ALL, 5) bSizer2 = wx.BoxSizer (wx.HORIZONTAL) bSizer2.AddSpacer ((0, 0), 1, wx.EXPAND, 5) self.m_button4 = wx.Button (self, wx.ID_ANY, u "Burn", wx.DefaultPosition, wx.DefaultSize, 0) bSizer2.Add (self.m_button4, 0, wx.ALL, 5) self.m_button5 = wx.Button (self , wx.ID_ANY, u "Izbriši", wx.DefaultPosition, wx.DefaultSize, 0) bSizer2.Add (self.m_button5, 0, wx.ALL, 5) bSizer1.Add (bSizer2, 1, wx.EXPAND | wx. SVE, 5) self.SetSizer (bSizer1) self.Layout () self.m_menubar1 = wx.MenuBar (0) self.m_menu1 = wx.Menu () self.m_menuItem1 = wx.MenuItem (self.m_menu1, wx.ID_ANY, u "Otvori", wx .EmptyString, wx.ITEM_NORMAL) self.m_menu1.AppendItem (self.m_menuItem1) self.m_menu1.AppendSeparator () self.m_menuItem3 = wx.MenuItem (self.m_menu1, wx.ID_ANY, u "Izlaz", wx.EmptyString, Prazan .ITEM_NORMAL) self.m_menu1.AppendItem (self.m_menuItem3) self.m_menubar1.Append (self.m_menu1 ili "Datoteke") self.SetMenuBar (self.m_menubar1) self.Centre (wx.BOTH) # klik događaj koji poziva zapis funkcije self.m_button4.Bind (wx.EVT_LEFT_DOWN, self.Record) def __del __ (self): pass # stvoriti prilagođenu poruku ili dijaloški okvir def Poruka (self, msg, title, style): dlg = wx.MessageDialog ( roditelj = Ništa, poruka = ​​msg, natpis = naslov, stil = stil) dlg.ShowModal () dlg.Destroy () # Funkcija snimanja koja reagira na događaj kliknite def Snimanje (samo, događaj): self.Message ("Ovo je događaj klikom! "," Informacije - Vodič ", wx.OK | wx.ICON_INFORMATION) app = wx.App (Netačno) okvir = MyForm (Nema) frame.Show (True) app.MainLoop () 

Zatim ćemo testirati istu aplikaciju u instalaciji sustava Windows 7 s prethodno instaliranim Pythonom i wxpythonom, a rezultat je sljedeći:

Kad završimo s punim razvojem, aplikacija se može distribuirati pomoću softvera poput InnoSetupa kao što smo vidjeli u vodičima:

  • Izradite instalatere pomoću programa Inno Setup
  • Prilagođeni instalater za distribuciju našeg softvera.

wxFormBuilder je vizualno okruženje koje nam omogućuje generiranje Python koda s platformom wxPython, druga alternativa razvoju grafičkih sučelja za Python bit će na korisniku hoće li koristiti PyQt ili wxPython.

Jedna od velikih prednosti wxFormBuilder -a je ta što sadrži mnoge komponente i widgete, vrlo prilagodljive čak i više nego u drugim popularnijim okruženjima. Rezultate možemo vidjeti dok stvaramo aplikacije, pa možemo imati različite verzije grafičkog sučelja i koda koji dodamo. Za razliku od Qt Designer -a, wxFormBuilder omogućuje generiranje događaja, a zatim pozivanje određene funkcionalnosti.
.

Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave