Python 界面生成器 wxFormBuilder 的入門使用(wxPython的界面設計工具的初學筆記)


環境,Win10,python3.7.3,wxPython 4.0.4,wxFormBuilder 3.9

1、准備一個窗體。

點擊wxformbuilder上方的標簽“forms”,並點擊標簽下方的第一個類似窗體的圖標“Frame”

然后,下面就會出現一個窗體。但是現在還不能直接往窗體上添加各種控件。咱們還需要給窗體添加布局器BoxSizer。

2、添加布局器

點擊wxformbuilder上方的標簽“Layout,並點擊標簽下方的第一個圖標“wxBoxSizer”。添加一個只有以列控件布局的布局器。這時,窗體上並沒有什么變化。但是窗口左邊的目錄樹有變化了,窗體下多了一個布局器。

3、放置控件

保持目錄樹如上圖一樣,選中布局器bSizer1。這樣,添加進窗體的控件都屬於並使用這個布局器的方法,單列布局。就是,所有添加上去的控件都是在一列上。

點擊wxformbuilder上方的標簽“Common,順次並點擊標簽下方的地三個圖標“wxStaticText”,第四個圖標“wxTextCtrl”,第一個圖標“wxButton”,第四個圖標“wxTextCtrl”。這樣,窗體設置上就會多出一個文字標簽、兩個文本框和按鈕。

4、修改控件屬性

點擊設計窗體上的控件,或者左邊樹形結構的控件名。在wxformbuilder右邊的編輯欄都會自動變成對應控件的屬性編輯。在此,你可以修改該控件的和窗體的各類屬性。

此處,我們將會修改主窗體的name、title,文本編輯框的name,文字標簽的label,和按鍵的label。以及控件的大小(通過 size 參數修改或工具欄上面的 Expand 工具修改)。

4.1 修改主窗體的name

主窗體的name和控件的name決定了你之后要使用的python代碼時,使用的實體對象的變量名。點擊樹形結構的MyFrame1,並在右邊屬性編輯欄修改窗體的name值為“MyFormMain”。此時,左邊樹形中對應的主窗體也會跟着改變名字。如下圖:

4.2修改控件的屬性

依照同樣的方法,在右邊的編輯框修改對應控件的屬性。

文本編輯框wxTextCtrl的name屬性修改為“text_One”和“text_Two”,文字標簽wxStaticText的label屬性修改為“wxFormBuilder 初學筆記”,和按鍵wxButton的label屬性修改為“求平方”,按鍵wxButton的name屬性修改為“button_main”。

修改完只有應該如下圖所示:

5、 添加控件的觸發事情函數

當按鈕被按下時,咱們應該觸發一個函數,將文本框里的內容清空。所以,應該給按鈕控件添加一個觸發按下之后應該使用的處理函數。    

點擊選中按鈕控件button_main,在右邊的屬性編輯框,點擊上面的另外一個標簽“Events”。添加一個給“OnButtonClick”的處理函數名:squareFunction。如下圖:

6、測試窗體內容。

窗體設計基本完事了,咱們現在稍微測試一個窗體的樣子。按下F5,彈出對話框后點擊確定。這樣就wxformbuilder簡單將咱們設計的窗體編譯C++的顯示方法,顯示出窗體的樣子。如下圖:

7、保存給python用的代碼。

點擊選中左邊樹形圖的最上面的圖標,即選中工程。再點擊標簽的python,即可出現在wxPython的代碼了。如下圖:

# -*- coding: utf-8 -*-

###########################################################################
## Python code generated with wxFormBuilder (version Oct 26 2018)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################

import wx
import wx.xrc

###########################################################################
## Class MyFormMain
###########################################################################

class MyFormMain ( wx.Frame ):

	def __init__( self, parent ):
		wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"wxFormBuilder 初學筆記", pos = wx.DefaultPosition, size = wx.Size( 500,181 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

		self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )

		bSizerMain = wx.BoxSizer( wx.VERTICAL )

		self.staticText_Test = wx.StaticText( self, wx.ID_ANY, u"wxFormBuilder 初學筆記", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.staticText_Test.Wrap( -1 )

		bSizerMain.Add( self.staticText_Test, 0, wx.ALL|wx.EXPAND, 5 )

		self.text_One = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizerMain.Add( self.text_One, 0, wx.ALL|wx.EXPAND, 5 )

		self.button_main = wx.Button( self, wx.ID_ANY, u"求平方", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizerMain.Add( self.button_main, 0, wx.ALL|wx.EXPAND, 5 )

		self.text_Two = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizerMain.Add( self.text_Two, 0, wx.ALL|wx.EXPAND, 5 )


		self.SetSizer( bSizerMain )
		self.Layout()

		self.Centre( wx.BOTH )

		# Connect Events
		self.button_main.Bind( wx.EVT_BUTTON, self.squareFunction )

	def __del__( self ):
		pass


	# Virtual event handlers, overide them in your derived class
	def squareFunction( self, event ):
		event.Skip()

  此時,全選上面的代碼。右鍵,【Copy】。新建一個py源文件,並將全部代碼粘貼進去,保存名為CalculatorFrame.py的python代碼源文件。至此,wxPython代碼就已經生成完畢了,請不要輕易變動文件里的代碼。下面就是咱們調用窗體的主要邏輯代碼了。

8、編輯邏輯代碼

將邏輯代碼保存為Calculator.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import wx

import CalculatorFrame

class CalcFrame(CalculatorFrame.MyFormMain):
    def __init__(self,parent):
        CalculatorFrame.MyFormMain.__init__(self,parent)
    def squareFunction(self,event):
        num = int(self.text_One.GetValue())
        self.text_Two.SetValue(str(num*num))

app = wx.App(False)

frame = CalcFrame(None)

frame.Show(True)

#start the applications
app.MainLoop()

將上面的邏輯代碼保存為Calculator.py,並跟剛剛生成那個CalculatorFrame.py,放在同一個目錄里。直接在代碼編輯器里面右鍵運行。效果如下:

在第一個文本框中輸入數字,再點擊“求平方”按鈕,看看下面是不是顯示出你要的結果呢?

至此,第一個窗口設計程序的過程寫完了。

參考文獻:

1、wxPython界面設計器—wxformbuilde的簡單教程  https://blog.51cto.com/yuyongid/1717514

2、wxFormBuilder摸索--小白上手--做一個編輯器      https://blog.csdn.net/caiza3491/article/details/79529966

3、wxPython的界面設計wxformbuilde初學筆記         https://blog.csdn.net/baoyan2015/article/details/54613930

4、Python界面生成器wxFormBuilder簡單使用入門教程    https://blog.csdn.net/Thanours/article/details/83789047

5、Python界面生成器wxFormBuilder使用示例          https://www.jianshu.com/p/84ec9e5c1cb1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM