wxPython Panel面板的用法

面板是一个容器元素,可以在其上放很多其他的元素,这点类似于 Frame。

我们通常会将窗口上的元素分类,例如图 1 所示的计算器程序,其就可以看做是由三大块组合而成的。

计算器的结构
图 1 计算器的结构

可以用使 Panel 来表示这些块。Panel 的初始化函数定义如下:
Panel(parent,
      id=ID_ANY,                     # 自己的ID
      pos=DefaultPosition,             # 自己相对父窗口的位置
      size=DefaultSize,                 # 大小
      style=TAB_TRAVERSAL,             # 风格
      name=PanelNameStr)                # 名字
块里面的元素的父元素(parent)就是对应的 Panel,例如现在按钮 1 就不直接隶属于主窗口,而是隶属于右下角的 Panel。

下面就创建这样的窗口,为了显示方便,为三个块设置不同的背景颜色。为了设置 Panel 的背景颜色,使用了其成员函数 SetBackgroundColour()。下面是完整的代码:
import wx
# 主窗口类
class MainFrame(wx.Frame):
  def __init__(self, p, t):
    """ p: 父亲窗口
    t:  窗口标题
    """       
    wx.Frame.__init__(self, id=wx.NewId(), parent=p, title=t, size=
         (420, 320))
    # 该panel的父亲就是该窗口, id=-1就表示任意id
    panel_top = wx.Panel(self, -1, size=(420, 110), pos=(0, 0))
    panel_top.SetBackgroundColour("#DB7093")                # 红色
    panel_left_down = wx.Panel(self, -1, size=(210, 210), pos=(0, 116))
    panel_left_down.SetBackgroundColour("#007FFF")       # 蓝色
    panel_right_down = wx.Panel(self, -1, size=(210, 210), pos=(220, 116))
    panel_right_down.SetBackgroundColour("#00FF7F")     # 绿色
if __name__ == "__main__":                # 如果运行该脚本
    # 创建应用程序
    app = wx.App(False)
    # Frame就是应用程序的主窗口,不是子窗口
    frame = MainFrame(None, "计算器-演示版")
    frame.Show(True)                     # 显示主窗口
    app.MainLoop()
运行后显示如图 2 所示的窗口。

使用Panel来布局计算器
图 2 使用Panel来布局计算器