如何获得带有 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)?的主要内容,如果未能解决你的问题,请参考以下文章

如何向带有边框的 JPanel 添加填充

Ag-Grid - 如何为最后一行设置边框底部

如何绘制带有边框和高程的CardView到Canvas?

带有虚线或虚线边框的 Plotly 条形图 - 如何实现?

如何为颤动按钮添加边框?

带有自定义边框的表格