Python WxWidgets - 如何在渐变绘制的面板上显示静态文本标签

时间:2013-10-19 21:21:37

标签: python wxpython wxwidgets

我有一个WxWidgets应用。我正在研究Python。该应用程序有一个主框架,一个菜单栏,一个状态栏在底部,对于中间主要内容我想要一个渐变绘制面板,以提供一个很好的背景阴影效果。我有这个工作,但我现在想开始将我的GUI小部件添加到面板(例如一组静态文本标签和编辑框)。如何将这些添加到面板中以使它们显示在面板的顶部?在我的示例代码中,向面板添加文本字段会导致其折叠为小尺寸。

感谢您的帮助。

def createGui(self, parent, title):
    wx.Frame.__init__(self, parent, title=title, style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
    self.SetBackgroundColour("white")
    self.SetSizeHints(800, 640, 800, 600)
    self.sizer = wx.BoxSizer(wx.VERTICAL)
    self.panel = wx.Panel(self, size=(800, 600))
    self.sizer.Add(self.panel)
    self.panel.Bind(wx.EVT_PAINT, self.on_paint)

    self.label1 = wx.StaticText(self, -1, "PV Power" , wx.Point(1, 1))
    # This next part is not working, I want to add static text at certain geometric locations to the panel, so I get to see
    # the panel with it's background gradient and the text labels on top
    #self.panel.AddChild(self.label1)

    menubar = wx.MenuBar()
    fileMenu = wx.Menu()
    fitem = fileMenu.Append(wx.ID_EXIT, 'Quit', 'Quit application')
    menubar.Append(fileMenu, '&File')
    self.SetMenuBar(menubar)

    self.Bind(wx.EVT_MENU, self.onQuit, fitem)

    # Create a box at the bottom for buttons
    self.statusbar = self.CreateStatusBar()
    self.statusbar.SetStatusText('Waiting to run')
    self.sizer.Add(self.statusbar)

    self.SetSizer(self.sizer)
    self.SetAutoLayout(1)
    self.sizer.Fit(self)
    self.Show()

def on_paint(self, event):
    dc = wx.PaintDC(self.panel)
    x = 0
    y = 0
    w, h = self.GetSize()
    dc.GradientFillLinear((x, y, w, h), 'white', 'light grey')

1 个答案:

答案 0 :(得分:1)

从你的问题来看,你需要做的就是

self.panel.SetMinSize((800,600))

创建面板后,不幸的是,对wxStaticText的限制将导致很多头痛(它将具有白色背景(或至少是彩色的))你可以做一些黑客将文本的背景设置为基本上模仿背景透明度的图像区域......但它们很痛苦

相关问题