python - wx.ScrolledWindow 滚动时不重新绘制

标签 python windows-7 wxpython wxwidgets

我正在使用 wxPython 开发一个小应用程序。

我有一个使用wx.ScrolledWindow的滚动窗口。它似乎拒绝在滚动时重新绘制内容。

示例:
Yes, my window-manager color-scheme is Pink. What of it?

创建上述示例的代码:

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-x64,python 2.7 32位,wxPython 2.8.11.0

最佳答案

我认为问题在于您的 wx.StaticText 小部件是 SaveEdFrame 的子级,而不是 ScrolledWindow。当您滚动时,ScrolledWindow 将在它们上面重新绘制。尝试:

 headerLabel = wx.StaticText(self.scroll, -1, "TestStr %s" % key)
 self.mainSizer.Add(headerLabel)

关于python - wx.ScrolledWindow 滚动时不重新绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931485/

相关文章:

windows-7 - Windows 7 - 未安装 IIS 时如何生成 CSR

c# - 计算机重命名后调试

batch-file - %CMDCMDLINE% 特殊变量被神奇地改变,尽管没有赋值

python - (wxpython) 使 matplotlib NavigationToolbar 为滚动面板内的图形静态

python - 正则表达式从文件名列表中查找图像序列

python - 与 Python 等其他语言相比,golang 中的 WaitGroup 是退步了吗?

python - SQLAlchemy/Pyramid DBSession 刷新问题

python - 将路径列表转换为python中的字典

python - wx 菜单显示为弹出窗口时从框架中消失

macos - 尽管更改了安全设置并使用命令行安装,但在 OSX10.11 上安装 wxpython 失败