如何在Python中管理一堆小部件?

发布于 2025-01-06 05:37:22 字数 1705 浏览 0 评论 0原文

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

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

发布评论

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

评论(1

神妖 2025-01-13 05:37:22

这种情况——有一对相反的操作——需要上下文经理。您无需将容器小部件显式推入堆栈或从堆栈中弹出,而是将容器的子级包装在 with 块中。基于您在此处显示的代码,这可以实现为类似的内容

@contextlib.contextmanager
def container(self, name=None):
    self.AddWidget(name=name, type='container', push=True)
    yield
    self.PopParentWidget()

< 的文档代码>contextlib.contextmanager)。

您的 SetupGUI 方法将变为:

def SetupGUI(self):
    with self.container(name='root'):
        with self.container():
            for i in range(0,8):
                self.AddWidget(name='button%i' % i, type='button')
        with self.container():
            for i in range(0,8):
                self.AddWidget(name='slider%i' % i, type='slider')

如您所见,嵌套从缩进中清晰可见,无需手动推送和弹出。

This sort of situation -- where you have a pair of opposite operations -- calls for a context manager. Instead of explicitly pushing and popping container widgets onto/from a stack, you would wrap the children of the container in a with block. Building on top of the code you've shown here, this could be implemented as something like

@contextlib.contextmanager
def container(self, name=None):
    self.AddWidget(name=name, type='container', push=True)
    yield
    self.PopParentWidget()

(Documentation for contextlib.contextmanager).

Your SetupGUI method then becomes:

def SetupGUI(self):
    with self.container(name='root'):
        with self.container():
            for i in range(0,8):
                self.AddWidget(name='button%i' % i, type='button')
        with self.container():
            for i in range(0,8):
                self.AddWidget(name='slider%i' % i, type='slider')

As you can see, the nesting is clear from the indentation, and there's no need to manually push and pop.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文