2011-07-11 21 views
1

我想在這個窗口內建立一個無邊界的wxPython窗口(即style = wx.BORDER_NONE)並使用fancytext(wx.lib.fancytext)。請注意,我對wxPython非常陌生,我的問題可能聽起來很愚蠢。 (這實際上是我第一次使用wxPython的嘗試)。如何獲得一個帶FancyText和無邊框的wxPython框架(wx.BORDER_NONE)?

我覺得在使用fancytext時我需要在我的frame中使用panel,因爲需要使用OnPaint方法來設置文本的fanciness。但是,使用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消失。

有什麼辦法可以在無邊框窗口上使用fancytext(style = wx.BORDER_NONE)?

回答

1

問題是面板沒有調整到框架的大小。您需要使用sizer,如下所示:

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