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

我认为使用fancytext时需要在panel中使用frame,因为需要使用OnPaint方法设置文本的奇特性。但是,将panels(甚至sizers)与style = 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()


(此示例使用在here和wxPython演示中找到的代码)

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

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


精美的文字消失了。

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

最佳答案

问题在于面板无法调整为框架大小。您需要使用一个大小调整器,如下所示:

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(FancyText(frame), 1, wx.EXPAND)
frame.SetSizer(sizer)
frame.Layout()

关于python - 如何获得带有FancyText并且没有边框的wxPython框架(wx.BORDER_NONE)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6651784/

10-12 23:12