wxpython设计GUI:wxFormBuilder工具常用布局结构介绍之布局四—面板拼接式

python借助wxFormBuilder工具搭建基础的GUI界面—wxFormBuilder工具使用介绍:https://blog.csdn.net/Logintern09/article/details/126685315

布局四:面板拼接式,先Panel面板构图,再使用程序代码在Frame框架上拼接面板

在这里插入图片描述

下面讲一下怎么实现Frame拼接不同面板的。

生成基础的panel模型

wxFormBuilder工具添加一个面板,在面板上继续添加想要的控件,将自动生成的python代码拷贝到Pycharm编辑器的某个命名的.py文件中。

面板上添加的基础控件如下:

在这里插入图片描述

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参数作为面板类的实例属性,变形后:

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模型,可以通过函数自动设置Panel放置在Frame上的位置来实现。将整个Frame看成是二维坐标轴的话,那么Frame的左上角是坐标(0,0)。

  def set_panel_dict(self):
        self.panel_dict = dict()
        init_length, init_width = self.canset_panel.GetSize()
        panel_width = 500
        for 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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Logintern09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值