文章目錄
- 1、V1.0_GUI初步排版梳理代碼
- 2、V2.0_優化結構為面向物件
- 3、V3.0 總結
- 關于GUI表單實作的總體思路梳理
1、V1.0_GUI初步排版梳理代碼
# 試驗帶標簽文字的文本框
import wx
# 初始化APP
app = wx.App()
# 定義表單
window = wx.Frame(None, title="試驗", size=(500, 500))
# 定義panel
panel = wx.Panel(window)
# 定義標簽
lblmin = wx.StaticText(panel, label="最小長度")
# 定義文本框
txtmin = wx.TextCtrl(panel)
# 定義標簽
lblmax = wx.StaticText(panel, label="最大長度")
# 定義文本框
txtmax = wx.TextCtrl(panel)
# 定義復選框
chkB1 = wx.CheckBox(panel, label="包含大寫字母")
chkB2= wx.CheckBox(panel, label="包含小寫字母")
chkB3 = wx.CheckBox(panel, label="包含數字")
chkB4= wx.CheckBox(panel, label="包含符號")
chkB5 = wx.CheckBox(panel, label="包含序號")
chkB6 = wx.CheckBox(panel, label="包含郵箱后綴")
chkB7 = wx.CheckBox(panel, label="保存到檔案")
# 定義標簽
lblfile = wx.StaticText(panel, label="檔案名及路徑")
# 定義文本框
txtfile = wx.TextCtrl(panel)
# 定義標簽
lblshu = wx.StaticText(panel, label="資料總數")
# 定義文本框
txtshu = wx.TextCtrl(panel)
# 定義2個按鈕
butOK = wx.Button(panel, label="確定")
butreset = wx.Button(panel, label="重置")
# 設定布局
box1 = wx.BoxSizer() # 默認是橫向的
box1.Add(lblmin, flag=wx.LEFT | wx.TOP, border=10)
box1.Add(txtmin, flag=wx.LEFT | wx.TOP, border=10)
box1.Add(lblmax, flag=wx.LEFT | wx.TOP, border=10)
box1.Add(txtmax, flag=wx.LEFT | wx.TOP, border=10)
# 設定第二行的布局
box2 = wx.BoxSizer() # 默認是橫向的
box2.Add(chkB1, flag=wx.LEFT | wx.TOP, border=10)
box2.Add(chkB2, flag=wx.LEFT | wx.TOP, border=10)
# 設定第三行的布局
box3 = wx.BoxSizer() # 默認是橫向的
box3.Add(chkB3, flag=wx.LEFT | wx.TOP, border=10)
box3.Add(chkB4, flag=wx.LEFT | wx.TOP, border=10)
# 設定第四行的布局
box4 = wx.BoxSizer() # 默認是橫向的
box4.Add(chkB5, flag=wx.LEFT | wx.TOP, border=10)
box4.Add(chkB6, flag=wx.LEFT | wx.TOP, border=10)
# 設定第五行的布局
box5 = wx.BoxSizer() # 默認是橫向的
box5.Add(chkB7, flag=wx.LEFT | wx.TOP, border=10)
box5.Add(lblfile, flag=wx.LEFT | wx.TOP, border=10)
box5.Add(txtfile, flag=wx.LEFT | wx.TOP, border=10)
# 設定第六行的布局
box6 = wx.BoxSizer() # 默認是橫向的
box6.Add(lblshu, flag=wx.LEFT | wx.TOP, border=10)
box6.Add(txtshu, flag=wx.LEFT | wx.TOP, border=10)
# 設定第七行的布局
box7 = wx.BoxSizer() # 默認是橫向的
box7.Add(butOK, flag=wx.LEFT | wx.TOP, border=10)
box7.Add(butreset, flag=wx.LEFT | wx.TOP, border=10)
# 設定垂直布局
boxFinal = wx.BoxSizer(wx.VERTICAL)
boxFinal.Add(box1)
boxFinal.Add(box2)
boxFinal.Add(box3)
boxFinal.Add(box4)
boxFinal.Add(box5)
boxFinal.Add(box6)
boxFinal.Add(box7)
panel.SetSizer(boxFinal)
# 顯示表單
window.Show(True)
# 啟動app
app.MainLoop()
2、V2.0_優化結構為面向物件
# V2.0優化結構---面向物件
import wx
import string, random
# 定義類
class GUI_CreatData:
# 類的初始化
def __init__(self):
# 初始化APP
self.app = wx.App()
# 定義表單
self.window = wx.Frame(None, title="試驗", size=(500, 500))
# 定義panel
self.panel = wx.Panel(self.window)
# 定義標簽
self.lblmin = wx.StaticText(self.panel, label="最小長度")
# 定義文本框
self.txtmin = wx.TextCtrl(self.panel)
# 定義標簽
self.lblmax = wx.StaticText(self.panel, label="最大長度")
# 定義文本框
self.txtmax = wx.TextCtrl(self.panel)
# 定義復選框
self.chkB1 = wx.CheckBox(self.panel, label="包含大寫字母")
self.chkB2 = wx.CheckBox(self.panel, label="包含小寫字母")
self.chkB3 = wx.CheckBox(self.panel, label="包含數字")
self.chkB4 = wx.CheckBox(self.panel, label="包含符號")
self.chkB5 = wx.CheckBox(self.panel, label="包含序號")
self.chkB6 = wx.CheckBox(self.panel, label="包含郵箱后綴")
self.chkB7 = wx.CheckBox(self.panel, label="保存到檔案")
# 定義標簽
self.lblfile = wx.StaticText(self.panel, label="檔案名及路徑")
# 定義文本框
self.txtfile = wx.TextCtrl(self.panel)
# 定義標簽
self.lblshu = wx.StaticText(self.panel, label="資料總數")
# 定義文本框
self.txtshu = wx.TextCtrl(self.panel)
# 定義2個按鈕
self.butOK = wx.Button(self.panel, label="確定")
self.butreset = wx.Button(self.panel, label="重置")
# 控制元件布局
def layout(self):
# 設定布局
box1 = wx.BoxSizer() # 默認是橫向的
box1.Add(self.lblmin, flag=wx.LEFT | wx.TOP, border=10)
box1.Add(self.txtmin, flag=wx.LEFT | wx.TOP, border=10)
box1.Add(self.lblmax, flag=wx.LEFT | wx.TOP, border=10)
box1.Add(self.txtmax, flag=wx.LEFT | wx.TOP, border=10)
# 設定第二行的布局
box2 = wx.BoxSizer() # 默認是橫向的
box2.Add(self.chkB1, flag=wx.LEFT | wx.TOP, border=10)
box2.Add(self.chkB2, flag=wx.LEFT | wx.TOP, border=10)
# 設定第三行的布局
box3 = wx.BoxSizer() # 默認是橫向的
box3.Add(self.chkB3, flag=wx.LEFT | wx.TOP, border=10)
box3.Add(self.chkB4, flag=wx.LEFT | wx.TOP, border=10)
# 設定第四行的布局
box4 = wx.BoxSizer() # 默認是橫向的
box4.Add(self.chkB5, flag=wx.LEFT | wx.TOP, border=10)
box4.Add(self.chkB6, flag=wx.LEFT | wx.TOP, border=10)
# 設定第五行的布局
box5 = wx.BoxSizer() # 默認是橫向的
box5.Add(self.chkB7, flag=wx.LEFT | wx.TOP, border=10)
box5.Add(self.lblfile, flag=wx.LEFT | wx.TOP, border=10)
box5.Add(self.txtfile, flag=wx.LEFT | wx.TOP, border=10)
# 設定第六行的布局
box6 = wx.BoxSizer() # 默認是橫向的
box6.Add(self.lblshu, flag=wx.LEFT | wx.TOP, border=10)
box6.Add(self.txtshu, flag=wx.LEFT | wx.TOP, border=10)
# 設定第七行的布局
box7 = wx.BoxSizer() # 默認是橫向的
box7.Add(self.butOK, flag=wx.LEFT | wx.TOP, border=10)
box7.Add(self.butreset, flag=wx.LEFT | wx.TOP, border=10)
# 設定垂直布局
boxFinal = wx.BoxSizer(wx.VERTICAL)
for i in range(1, 8):
boxFinal.Add(eval(f"box{i}")) # eval函式將字串轉換為物件
self.panel.SetSizer(boxFinal)
# 運行app
def run(self):
self.window.Show(True)
self.app.MainLoop()
if __name__ == '__main__':
gui = GUI_CreatData()
gui.layout()
gui.run()
3、V3.0 總結
關于GUI表單實作的總體思路梳理

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302486.html
標籤:其他
