绑定到 wxpython 小部件的调整大小事件的函数在调整大小时被多次调用

发布于 2024-11-15 21:57:21 字数 393 浏览 2 评论 0原文

我使用 wxpython 工具包在 python 中制作了一个带有 GUI 的小应用程序。它由一个作为顶部窗口的框架和 100 个 StaticText 子小部件组成。我已将它们的大小事件 (wx.EVT_SIZE) 绑定到 OnResize 函数,该函数根据 StaticText 小部件的大小更改其字体。 (当我在运行时相应地调整框架窗口的大小时,这有助于增加或减少小部件的字体大小。)

现在的问题是 OnResize 函数被调用 4 次 code> 每次我调整框架大小时。这大大减慢了我的应用程序的启动速度(以及它的大小调整速度)。我想要的是 OnResize 函数必须只被调用一次。

这有可能吗?

I have made a small app with a GUI in python using the wxpython toolkit. It consists of a frame as the top window and 100 StaticText child widgets. I have bind their size events (wx.EVT_SIZE) to a OnResize function which changes their font according to the size of the StaticText widgets. (This helps to increase or decrease the size of the font of the widgets when I resize my frame window accordingly at runtime.)

Now the poblem is that the OnResize function gets called 4 times every time I resize my frame. This considerably slowsdown the startup of my app (and also its resizing.) What I want is that the OnResize function must get called only once.

Is this possible in any way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一梦等七年七年为一梦 2024-11-22 21:57:21

考虑另一种方法。

保留先前处理的大小的变量。然后,在大小处理程序中,仅当小部件的大小自上次大小事件以来实际发生变化时才更改字体大小。

def OnResize(self, event):
    w, h = size = self.GetSize()
    if size != self.previous_size:
        # update font size
    self.previous_size = size

Consider an alternative approach.

Keep a variable of the previously processed size. Then, in your size handler, only change the font size if the size of the widget actually changed since the last size event.

def OnResize(self, event):
    w, h = size = self.GetSize()
    if size != self.previous_size:
        # update font size
    self.previous_size = size
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文