1
我有一個小應用程序,我正在使用wxPython。wx.ScrolledWindow滾動時不刷新
我有一個使用wx.ScrolledWindow
的滾動窗口。它在滾動時似乎拒絕重新繪製內容。
例子:
import wx
class SaveEdFrame(wx.Frame):
def __init__(self, *args, **kwds):
kwds["style"] = wx.DEFAULT_FRAME_STYLE|wx.EXPAND
wx.Frame.__init__(self, *args, **kwds)
self.__do_layout()
self.Bind(wx.EVT_SIZE, self.onSize)
def __mainSizer(self):
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
for key in xrange(30):
self.headerLabel = wx.StaticText(self, -1, "TestStr %s" % key)
self.mainSizer.Add(self.headerLabel)
return self.mainSizer
def __do_layout(self):
## begin wxGlade: SaveEdFrame.__do_layout
self.scroll = wx.ScrolledWindow(self, style=wx.FULL_REPAINT_ON_RESIZE)
self.scroll.SetScrollbars(1, 10, 1, 10)
self.scroll.SetSizer(self.__mainSizer())
def onSize(self, event):
self.scroll.SetSize(self.GetClientSize())
self.Refresh()
if __name__ == "__main__":
app = wx.App(0)
mainFrame = SaveEdFrame(None)
app.SetTopWindow(mainFrame)
mainFrame.Show(True)
app.MainLoop()
我已經通過wxDocs挖,而且在我看來,一個解決辦法是繼承wx.ScrolledWindow
,手動:那上面的例子創建
代碼捕獲wx.EVT_SCROLLWIN
事件,然後明確重新繪製該窗口,但在調用self.Refresh()
時,我嘗試執行此操作失敗,但未造成重繪內部wx.ScrolledWindow
。
不管怎樣,在我看來,wx.ScrolledWindow
對象的整個點在於它應該在滾動時處理自己的重繪。
我在做什麼錯?
平臺是W7-64,Python 2.7版32位,wxPython的2.8.11.0
是的。這解決了它。另外:Doh! – 2011-02-09 06:47:56