Python ve wxFormBuilder ile uygulama geliştirme

İçindekiler

Python programlama dili, grafik arayüzler geliştirmek için çeşitli kitaplıkların ve çerçevelerin benimsenmesine izin verir. Bazıları, öğreticileri gördüğümüz platform olan Tinker, Wxwidget ve QT'dir:

  • Python, PyQT ve QT Desginer 5 ile çapraz platform uygulamaları
  • Sqlite Database, PyQT ve QT Designer ile uygulamalar.

Bu eğitimde göreceğiz WxWidget ve wxFormBuilder tasarım aracıyla grafik arayüzler nasıl geliştirilir. wxFormBuilder, grafik kullanıcı arayüzlerinin tasarımı için bir uygulamadır, ücretsiz ve açık kaynak kodludur, wxWidgets kitaplıklarının kullanılmasına izin verir, çok platformlu uygulamaların geliştirilmesi için yaygın olarak kullanılır.

wxFormBuilder bir görsel geliştirme aracıdır.En büyük avantajı, tasarlanırken C++, Python, PHP, Lua ve XRC'de kod üretebilmesidir. Windows, Linux ve Mac Os üzerinde çalışır.

Bu ders için Linux'ta ve VirtualBox ve Windows 7 ile sanal bir makinede, çoklu platform uygulamasını geliştirebileceğimizi kanıtlamak için, aynı şekilde Linux'ta kurulum yapacağız ve Linux ile sanal bir makineye sahip olacağız.

Aşağıdaki araçları yüklememiz gerekecek:

pitonÜst düzey bir programlama dilidir, python'un temel amacı kodun okunabilirliğini kolaylaştırmaktır ve programcıların C++, C# veya Java gibi programlama dillerine kıyasla daha az kod satırında uygulama geliştirmesine olanak sağlar.

Python'un avantajlarından biri, nesne yönelimli, zorunlu ve işlevsel veya prosedürel programlama gibi çoklu programlama paradigmalarını desteklemesidir. Python'u resmi web sitesinden indirebiliriz.

wxPythonÇapraz platformdur, Windows, Linux ve Mac OS üzerinde değişiklik yapılmadan çalışabilir. Arayüz tasarımının sonucu, çalıştırdığı işletim sistemine bağlı olarak uygulamanın yerel görünümüdür.

wxWidgets grafik kitaplığının Python programlama dili kullanılarak taşınmasına ve kullanılmasına izin veren bir dizi kitaplıktır. wxWidgets kitaplığı, platformlar arası olmasıyla karakterize edilir.

Resmi WxPython web sitesinden indirilebilir, Linux'ta depolarda gelir veya eklenebilir.

wxFormBuilderÜcretsiz, platformlar arası ve açık kaynaklı bir IDE'dir. GUI wxWidgets veya bu durumda wxPython grafik arayüzleri tasarlamak için kullanılır, platformlar arası uygulamaların oluşturulmasına izin verir. Qt Designer gibi, wxFormBuilder aracı da görsel geliştirme için kullanılır.

wxFormbuilder, C ++, Python, PHP, Lua ve XRC kodunda kod oluşturmaya izin verir. Biz tasarlarken kod oluşturulur.

Resmi web sitesinden indirebiliriz, yukarıda belirtilen tüm dilleri destekleyen 3.4'ten daha yüksek bir sürüm kurmalıyız.

wxPython ve wxFormBuilder ile uygulama örnekleri
Bu dersimizde uygulamayı Linux altında geliştireceğiz ve ardından Windows üzerinde de çalıştıracağız. Linux'ta python zaten kurulu olduğundan wxPython ve wxFormbuilder'ı kuracağız, bir terminal penceresinden aşağıdaki komutu yazıyoruz:

 sudo add-apt-repository -y ppa: wxformbuilder / wxwidgets sudo apt-get güncellemesi sudo apt-get kurulumu libwxgtk3.0-0 libwxgtk-media3.0-0 sudo add-apt-repository -y ppa: wxformbuilder / sürüm sudo apt -güncellemeyi al sudo apt-get install wxformbuilder
Daha sonra herhangi bir dizinden kullanabilmek için wxpython'u ortam değişkeni olarak eklemeliyiz:
 PYTHONPATH'i dışa aktar = "$ PYTHONPATH": / usr / lib / python2.7 / dist-packages / wx-2.8-gtk2-unicode /
Ardından ana menüden wxFormbuilder'ı açıyoruz:

wxFormBuilder, kullandığımız projenin veya ekranın ve bileşenlerin bulunduğu sol sütunlu bir masaüstü, ortada tasarım sekmesi ve her dil için bir sekme, sağda hem projenin hem de programın özelliklerine sahip olacağız. kullandığımız bileşenler.

Yapılandırmamız gereken ilk şey proje olacak, bunun için projenin ismine tıklıyoruz ve ardından bir isim ve kullanacağımız dil atayacağımız özelliklere gidiyoruz.

Ardından Form sekmesine gidiyoruz ve ekranın kapsayıcısını oluşturacak bir form ekliyoruz.

Daha sonra özelliklerden MyForm atadığımız formun adını ve olacak başlığı değiştirebiliriz. Örnek01- ÖğreticiAyrıca arka plan rengi, boyutu, pencere türü ve daha pek çok seçeneği değiştirebiliyoruz.

Python sekmesine gidip kodun nasıl üretildiğini görebiliriz.

Kodu bir dosyada oluşturmak için önce menüden projeyi kaydetmeliyiz. Dosya> Farklı Kaydet, ve onu example01.fbp olarak kaydederiz

Sonra menü seçeneğine gidiyoruz Dosya> Kod Oluştur, ardından proje dosyasını kaydettiğimiz dizine gidiyoruz ve noname.py dosyasını göreceğiz

Bu noname.py dosyası, arayüz tasarımı ile oluşturulan Python kodunu içerir, dosyayı example01.py olarak yeniden adlandırabiliriz.

Ardından, uygulama yürütüldüğünde bu tasarımın görüntülenmesi için kodu eklemeliyiz, bunun için dosyayı açıp aşağıdaki kodu aşağıdaki gibi kalacak şekilde ekliyoruz:

 wx import wx.xrc class MyForm (wx.Frame): def __init __ (self, parent): wx.Frame .__ init__ (self, parent, id = wx.ID_ANY, title = u "Örnek01 - Öğretici", konum = wx .DefaultPosition, size = wx.Size (500,300), stil = wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHintsSz (wx.DefaultSize, wx.DefaultSize) self.Centre (wx.BOTH) def __del __ (self) : Pass # Form Sonu tasarım kodu ## Uygulamayı çalıştırırken uygulamayı gösteren kod = wx.App (False) frame = MyForm (None) frame.Show (True) app.MainLoop ()
Ardından bir terminal penceresinden uygulama dizinine gideriz ve python example01.py'yi çalıştırırız.

Ardından wxFormbuilder'a gidiyoruz ve ekranı tasarlamaya başlıyoruz. Bileşenler, Düzen ve ızgaralar kullanılarak ekranda dağıtılır, bu durumda dikey bir wxBoxSizer seçeceğiz, yaptığı şey, bileşenleri ekleyeceğimiz ekranı üç satıra bölmektir.

Daha sonra bir menü ekleyeceğiz, bunun için Menü / Araç Çubuğu sekmesine gidiyoruz, önce ana menü olacak MenuBar bileşenini ekleyeceğiz. Ardından hiyerarşik olarak bir Open Menuitem, bir ayırıcı ve Exit adında başka bir Menuitem ekleyeceğiz.

Nesnelerin en yüksek olanın en alttakini kapsadığı bir hiyerarşiye göre düzenlendiğini görebilir, sadece sürükleyerek konumlarını değiştirebiliriz. Sonra sekmeye gideceğiz Veri ve bir ekleyeceğiz wxGrid kontrolü Bir veri ızgarası göstermek için, onlar için kendimizi Düzen'e yerleştiririz, böylece bir sonraki kontrol menünün altında bulunur.

Yeni kodu oluşturuyoruz ve dosya değiştirilecek isimsiz.py, yapılan değişiklikleri ekleyerek example02.py olarak yeniden adlandırabiliriz. Ardından şu komutu kullanarak bir terminal penceresinden çalıştırıyoruz:

 piton örnek02.py

şimdi gidiyoruz wxFormbuilder ve ızgaranın altına bir ayırıcı çubuk ekleyeceğiz. Ortak sekme ve bileşeni seçin wxStaticLine.

Daha sonra detay master yapmak için alanlar oluşturacağız, bunun için kendimizi Layout'a yerleştireceğiz ve bir bileşen ekleyeceğiz.

Grafik arayüzler tasarlamanın yanı sıra olaylar ekleyebiliriz, örneğin kayıt düğmesine tıklıyoruz ve Olaylar sekmesine gidiyoruz, olayın türünü arıyoruz, bu durumda OnLeftAşağı, basılan farenin sol tuşuna tıklayın.

Bu durumda olayı çağıracak olan fonksiyonun adını yazıyoruz, kodu oluştururken sadece bizim için fonksiyonu oluşturacak, daha sonra fonksiyonellik ile birlikte kodu yazmamız gerekecek. Dosyayı oluşturduğumuzda, sonuna aşağıdaki tam kodu ekleyeceğiz:

 wx içe aktar wx.xrc içe aktar wx.grid ##################################### ##################################### Class MyFrame1 ########### ################################################# ############## class 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), stil = wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHintsSz (wx.DefaultSize, wx.DefaultSize) bSizerVER1 = wx.BoxTICS. m_grid1 = wx.grid.Grid (self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) # Grid self.m_grid1.CreateGrid (4, 4) self.m_grid1.EnableEditing (True) self.m_grid1.EnableGridLines ( True) self.m_grid1.EnableDragGridSize (False) self.m_grid1.SetMargins (0, 0) # Columns self.m_grid1.EnableDragColMove (False) self.m_grid1.EnableDragColSize (True) self.m_grid1M.Set.m_grid1.Set. SetColLabel.mSize ( .SetColLabelAlignment (wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Satırlar self.m_grid1.EnableDragRowSize (True) self.m_grid1.SetRowLabelSize (80) self.m_grid1.SetRowLabelAlignment (wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Etiket Görünümü # Hücre Varsayılanları self.SetLIGN1 wDefaults.SetLIFT1 .SetLignment_OPELL, w / w Varsayılanları w / wm_grid1.SetLIGNDefaultCell_FT ) bSizer1.Add (self.m_grid1, 0, wx.ALL, 5) self.m_staticline4 = wx.StaticLine (self, wx.ID_ANY, wx.DefaultPosition, wx. , wx.LI_HORIZONTAL) bSizer1.Add (self.m_staticline4, 0, wx.EXPAND | wx.ALL, 5) fgSizer1 = wx.FlexGridSizer (0, 4, 0, 0) fgSizer1.SetFlexibleDirection (wx.BOTH) fgNoSizer1.Setrow (wx.FLEX_GROWMODE1_SPECIFIED) selfText.SelfText.(self, wx.ID_ANY, u "Product", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText1.Wrap (-1) fgSizer1.Add (self.m_staticText1, 0, 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 (self.m_textCtrl1, 1, wx. HEPSİ | wx.EXPAND, 5) self .m_staticText2 = w x.StaticText (self, wx.ID_ANY, u "Kod", 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_textCtrl2, 1, wx.EXPAND | wx. wx.ALLPAND | wx.ALIGN_BOTTOM, 5) self.m_staticText3 = wx.StaticText (self, wx.ID_ANY, u "Category", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText3.Wrap (-1) fgSizer1. Ekle (self. m_staticText3, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) m_comboBox1Choices = [] self.m_comboBox1 = wx.ComboBox (self, wx.ID_ANY, u "Seç", wx.DefaultPosition, wx.DefaultSize, m_ ) .Add (self.m_comboBox1, 0, wx.ALL, 5) self.m_staticText4 = wx.StaticText (self, wx.ID_ANY, u "Giriş tarihi", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText4 Sarma (-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.Add (self.m_datePickerALL1, 1, wx.Wx. GENİŞLET, 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) bSizer1. (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 = ekleyin 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 "Sil", wx.DefaultPosition, wx.DefaultSize, 0) bSizer2.Add (self.m_button5, 0, wx.ALL, 5) bSizer1.Add (bSizer2, 1, wx.EXPAND | wx. TÜMÜ, 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 "Aç", 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 "Çıkış", wx. Boş .ITEM_NORMAL) self.m_menu1.AppendItem (self.m_menuItem3) self.m_menubar1.Append (self.m_menu1 veya "Files") self.SetMenuBar (self.m_menubar1) self.Centre (wx.BOTH) # tıklama olayı işlev kaydı self.m_button4.Bind (wx.EVT_LEFT_DOWN, self.Record) def __del __ (self): pass # özel bir mesaj veya iletişim kutusu oluştur def Mesaj (self, msg, title, style): dlg = wx.MessageDialog ( parent = Yok, mesaj = msg, başlık = başlık, stil = stil) dlg.ShowModal () dlg.Destroy () # Olaya yanıt veren kayıt işlevi tıklama def Kayıt (self, olay): self.Message ("Bu event "," Bilgi - Öğretici ", wx.OK | wx.ICON_INFORMATION) app = wx.App (Yanlış) çerçeve = MyForm (Yok) çerçeve.Show (True) app.MainLoop () 

Daha sonra aynı uygulamayı bir Windows 7 kurulumunda Python ve wxpython önceden yüklenmiş olarak test edeceğiz ve sonuç şöyle:

Tam geliştirmemizi tamamladığımızda, uygulama, öğreticilerde gördüğümüz gibi InnoSetup gibi yazılımlar kullanılarak dağıtılabilir:

  • Inno Setup ile yükleyiciler oluşturun
  • Yazılımımızı dağıtmak için özel yükleyici.

wxFormBuilder, wxPython platformu ile Python kodu oluşturmamızı sağlayan görsel bir ortamdır., Python için grafik arayüzler geliştirmenin başka bir alternatifi, PyQt veya wxPython kullanıp kullanmamak kullanıcıya kalmış olacaktır.

wxFormBuilder'ın en büyük avantajlarından biri, diğer popüler ortamlardan çok daha fazla özelleştirilebilir birçok bileşen ve widget içermesidir. Uygulamaları oluştururken sonuçları görebiliriz, böylece grafik arayüzün ve eklediğimiz kodun farklı versiyonlarına sahip olabiliriz. Qt Designer'dan farklı olarak wxFormBuilder, olayların oluşturulmasına ve ardından belirli bir işlevin başlatılmasına izin verir.
.

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave