1

我想构建一个没有边框(即 )的 wxPython 窗口,并在该窗口内style = wx.BORDER_NONE使用 fancytext( )。wx.lib.fancytext请注意,我对 wxPython 很陌生,我的问题可能听起来很愚蠢。(这实际上是我第一次尝试使用 wxPython)。

我想在使用 fancytext 时我需要panel在我的中使用 a ,因为需要一种方法来设置文本的精美程度。但是,似乎不可能使用(甚至)与.frameOnPaintpanelssizersstyle = wx.BORDER_NONE

这就是我想要的,但没有窗口边框和东西:

import  wx
import  wx.lib.fancytext as fancytext

test_str2 = '<font family="swiss" color="dark green" size="40">big green text</font>'

class FancyText(wx.Panel):
    """display fancytext on a panel"""
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, wx.ID_ANY)
        self.Bind(wx.EVT_PAINT, self.OnPaint)

    def OnPaint(self, evt):
        """generate the fancytext on a paint dc canvas"""
        dc = wx.PaintDC(self)
        fancytext.RenderToDC(test_str2, dc, 0, 20)


app = wx.App(0)
frame = wx.Frame(None, wx.ID_ANY, title='wxPython fancy text', size=(500, 250))
frame.Centre()
FancyText(frame)
frame.Show(True)
app.MainLoop()

(此示例使用此处和 wxPython 演示中的代码)

如果将初始化窗口的行更改为

frame = wx.Frame(None, wx.ID_ANY, title='wxPython fancy text', size=(500, 250), style = wx.BORDER_NONE)

花式文字消失了。

有什么方法可以在没有边框(style = wx.BORDER_NONE)的窗口上使用 fancytext?

4

1 回答 1

1

问题是面板没有调整到框架的大小。您需要使用 sizer,如下所示:

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(FancyText(frame), 1, wx.EXPAND)
frame.SetSizer(sizer)
frame.Layout()
于 2012-05-18T15:36:01.893 回答