pygtk 如何在切换页面上替换选项卡的内容

问题描述

假设我有这样的基本笔记本:

import gi
gi.require_version("Gtk","3.0")
from gi.repository import GLib,Gtk


class MainWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self,title="My App")
        self._init = False # Try to stop recursion errors during setup

        self.notebook = Gtk.Notebook()

        self.page0 = Gtk.Label(label='Some text')
        self.page1 = Gtk.Label(label='More text')

        self.notebook.append_page(self.page0,Gtk.Label(label='p1'))
        self.notebook.append_page(self.page1,Gtk.Label(label='p2'))

        self.notebook.connect('switch-page',self.refresh)

        self.add(self.notebook)
        self._init = True


    def refresh(self,notebook,page,page_num):
        if page_num == 0 and self._init:
            self.remove(self.page0)
            self.page0 = Gtk.Label(label='Some more and different text')
            self.notebook.prepend_page(self.page0,Gtk.Label(label='p1'))
            self.notebook.set_current_page(0)

win = MainWindow()
win.connect("destroy",Gtk.main_quit)
win.show_all()
Gtk.main()

我想要做的是当用户点击第一个选项卡(因此是切换页面信号)时,该选项卡被“刷新”(在这种情况下只是替换文本,但它可能是更实质性的变化,就像更改显示的小部件一样)。我应该尝试删除“旧”选项卡并在位置 0 插入一个新选项卡,还是调用选项卡上的某个函数来更新它显示的内容?

所示代码因递归问题而崩溃(我猜在设置过程中会调用 switch-page?),这就是为什么我认为调用某种 updateWidegt() 函数比尝试删除页面更好。但我不确定如何让笔记本“看到”这些变化。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)