貴州城鄉(xiāng)建設官方網(wǎng)站廣州百度seo代理
python借助wxFormBuilder工具搭建基礎(chǔ)的GUI界面—wxFormBuilder工具使用介紹:https://blog.csdn.net/Logintern09/article/details/126685315
布局四:面板拼接式,先Panel面板構(gòu)圖,再使用程序代碼在Frame框架上拼接面板
下面講一下怎么實現(xiàn)Frame拼接不同面板的。
生成基礎(chǔ)的panel模型
wxFormBuilder工具添加一個面板,在面板上繼續(xù)添加想要的控件,將自動生成的python代碼拷貝到Pycharm編輯器的某個命名的.py文件中。
面板上添加的基礎(chǔ)控件如下:
wxFormBuilder工具自動生成的python代碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-###########################################################################
## Python code generated with wxFormBuilder (version Jun 17 2015)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################import wx
import wx.xrc###########################################################################
## Class MyPanel
###########################################################################class MyPanel(wx.Panel):def __init__(self, parent):wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300),style=wx.TAB_TRAVERSAL)bSizer = wx.BoxSizer(wx.VERTICAL)self.m_slider = wx.Slider(self, wx.ID_ANY, 50, 0, 100, wx.DefaultPosition, wx.DefaultSize,wx.SL_INVERSE | wx.SL_VERTICAL)bSizer.Add(self.m_slider, 0, wx.ALL, 5)self.m_checkBox = wx.CheckBox(self, wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0)bSizer.Add(self.m_checkBox, 0, wx.ALL, 5)self.m_staticText = wx.StaticText(self, wx.ID_ANY, u"MyLabel", wx.DefaultPosition, wx.DefaultSize, 0)self.m_staticText.Wrap(-1)bSizer.Add(self.m_staticText, 0, wx.ALL, 5)m_comboBoxChoices = []self.m_comboBox = wx.ComboBox(self, wx.ID_ANY, u"Combo!", wx.DefaultPosition, wx.DefaultSize, m_comboBoxChoices,0)bSizer.Add(self.m_comboBox, 0, wx.ALL, 5)self.SetSizer(bSizer)self.Layout()def __del__(self):pass
Frame拼接Panel
原Panel類初始化:
class MyPanel(wx.Panel):def __init__(self, parent):wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300),style=wx.TAB_TRAVERSAL)
將面板類的位置pos、尺寸size、風格style參數(shù)作為面板類的實例屬性,變形后:
class MyPanel(wx.Panel):def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300),style=wx.TAB_TRAVERSAL):wx.Panel.__init__(self, parent, id, pos, size, style)
Frame拼接Panel:
class MyFrame(wx.Frame):def __init__(self):wx.Frame.__init__(self, None, id=-1, title=u"", pos=(200, 200),size=(600, 600), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)self.Center()self.my_panel = MyPanel(self, id=-1, pos=(0, 0), size=wx.Size(200, 300), style=wx.TAB_TRAVERSAL)
Frame上拼接多個Panel模型
窗口Frame上并排的拼接多個Panel模型,可以通過函數(shù)自動設置Panel放置在Frame上的位置來實現(xiàn)。將整個Frame看成是二維坐標軸的話,那么Frame的左上角是坐標(0,0)。
def set_panel_dict(self):self.panel_dict = dict()init_length, init_width = self.canset_panel.GetSize()panel_width = 500for i in range(len(item_list)):panel_pos = (self.panel_length * i, init_width)self.panel_dict[item_list[i]] = frameset_panel(self, id=-1, pos=panel_pos,size=wx.Size(self.panel_length, panel_width), style=wx.TAB_TRAVERSAL)
參考文章
python GUI圖形化編程-wxpython(2)-使用panel面板
wx.BoxSizer布局管理:https://blog.csdn.net/igolang/article/details/9397175