在 PyGTK/GTK 中动态添加/删除笔记本页面

发布于 2024-07-26 18:18:17 字数 557 浏览 0 评论 0原文

如何即时刷新笔记本?

我有一个应用程序应该有不同数量的 根据底层模型中的数据进行页面。 为了 同步笔记本的外观 我想刷新它 每次从模型中添加/删除一行时。

我已经尝试过:

    ...
    def get_pagebox(self, label)
        ...
        return pagebox
    def _reinit(self):
        for child in self.notebook.get_children():
            self.notebook.remove(child)
        for label in self.get_labels():
            self.notebook.append(self.get_pagebox(label), label)
        self.notebook.queue_draw_area(0,0,-1,-1)
    ...

它删除旧页面,但无法附加新页面。 可能是什么 问题是什么?您认为如何才能做到这一点?

How to refresh a notebook on the fly?

I have an application which is supposed to have various number of
pages according to the data in the underlying model. In order to
synchronize the appearance of the Notebook I'd like to refresh it
every time a row is added/deleted from the model.

I've tried this:

    ...
    def get_pagebox(self, label)
        ...
        return pagebox
    def _reinit(self):
        for child in self.notebook.get_children():
            self.notebook.remove(child)
        for label in self.get_labels():
            self.notebook.append(self.get_pagebox(label), label)
        self.notebook.queue_draw_area(0,0,-1,-1)
    ...

It removes the old pages, but fails to append new ones. What could be
the problem and how do you think this could be done?

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

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

发布评论

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

评论(2

梦开始←不甜 2024-08-02 18:18:18

看起来不错。 您是否尝试执行显式 添加后在小部件上显示()

That looks fine. Did you try doing an explicit show() on the widgets after adding them?

任谁 2024-08-02 18:18:17

添加新页面后,您应该在笔记本上调用 show_all() 。 GTK+ 创建的所有小部件最初都是隐藏的。 queue_draw_area 调用应该不是必需的。

You should just call show_all() on the notebook after adding the new pages. All widgets created by GTK+ are initially hidden. The queue_draw_area call shouldn't be necessary.

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