Изменение названия вкладки в wx.Notebook

Я экспериментирую с wxPython,

У меня есть интерфейс с вкладками (ноутбук), и каждая вкладка в основном представляет собой представление списка файлов (да, я пытаюсь создать файловый менеджер)

Список файлов наследуется от wx.ListCtrl, а интерфейс с вкладками наследуется от wx.Notebook.

Я только начинаю .. и у меня было так, что двойной щелчок по папке приведет к переходу в эту папку, но я также хочу изменить название вкладки.

Как я могу это сделать?

У меня есть объект, который представляет список файлов и заголовок, который я хочу установить,

[ EDIT Notebook.SetPageText() принимает число, поэтому я не могу передать ему объект вкладки напрямую ]

мой текущий подход состоит в том, чтобы переключаться между вкладками, пока одна из них не совпадет с моей вкладкой:

    for tab_id in range(self.GetPageCount()):
        if self.GetPage(tab_id) == tab:
            self.SetPageText(tab_id, title)
            break

Это кажется довольно наивным, не существует ли более разумного подхода?


person hasen    schedule 05.04.2009    source источник


Ответы (3)


Я не знаю wxPython, но я предполагаю, что он обертывает все методы классов C++.

Существует функция wxNotebook::GetSelection(), которая возвращает wxNOT_FOUND или индекс выбранной страницы, который затем можно использовать для вызова wxNotebook::SetPageText()< /эм>.

Или используйте wxNotebook::GetPage() с этим индексом, чтобы проверить, равен ли он tab.

person mghie    schedule 05.04.2009
comment
Я не хочу делать предположение, что только выбранная страница может изменить каталог. - person hasen; 05.04.2009
comment
Я не уверен, как бы вы дважды щелкнули по списку файлов, если бы эта страница не была активной в блокноте? Но если вам нужно, чтобы он работал со всеми страницами, просто придерживайтесь кода в своем вопросе, это неплохо или наивно, ИМО. - person mghie; 05.04.2009

Я думаю, что сделать что-то вроде этого помогает:


notebook.get_tab_label(notebook.get_nth_page(your_page_number)).set_text("Your text")

Если вы хотите всегда иметь ссылку на текущую вкладку, вы должны подключить сигнал "switch-page" и сохранить страницу в переменной.

person Geo    schedule 05.04.2009
comment
Чем это лучше, чем блокнот.SetPageText(номер_страницы, заголовок)? Кроме того, вам все равно нужно сначала найти номер. - person hasen; 05.04.2009

Поскольку .GetPage возвращает wx.Window, я думаю, что tab.Label = title должно работать.

person Venti    schedule 05.04.2009