如何获得带有 FancyText 且没有边框的 wxPython 框架 (wx.BORDER_NONE)?
Posted
技术标签:
【中文标题】如何获得带有 FancyText 且没有边框的 wxPython 框架 (wx.BORDER_NONE)?【英文标题】:How can I get a wxPython frame with FancyText and no border (wx.BORDER_NONE)? 【发布时间】:2011-10-02 20:48:26 【问题描述】:我想构建一个没有边框的 wxPython 窗口(即style = wx.BORDER_NONE
)并在该窗口内使用fancytext(wx.lib.fancytext
)。请注意,我对 wxPython 很陌生,我的问题可能听起来很愚蠢。 (这其实是我第一次尝试使用 wxPython)。
我想当使用fancytext 时,我需要在frame
中使用panel
,因为需要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)
花式文字消失了。
有什么方法可以在没有边框的窗口上使用 fancytext (style = wx.BORDER_NONE
)?
【问题讨论】:
【参考方案1】:问题是面板没有调整到框架的大小。您需要使用 sizer,如下所示:
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(FancyText(frame), 1, wx.EXPAND)
frame.SetSizer(sizer)
frame.Layout()
【讨论】:
以上是关于如何获得带有 FancyText 且没有边框的 wxPython 框架 (wx.BORDER_NONE)?的主要内容,如果未能解决你的问题,请参考以下文章