【问题标题】:How can I get a wxPython frame with FancyText and no border (wx.BORDER_NONE)?如何获得带有 FancyText 且没有边框的 wxPython 框架 (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)?

【问题讨论】:

    标签: python wxpython border noborder


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      • 2020-05-01
      • 2019-03-23
      相关资源
      最近更新 更多