Изменение названия вкладки в wx.Notebook - PullRequest
3 голосов
/ 05 апреля 2009

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

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

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

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

Как мне это сделать?

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

[ РЕДАКТИРОВАТЬ Notebook.SetPageText() принимает число, поэтому я не могу передать ему объект табуляции ]

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

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

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

Ответы [ 3 ]

2 голосов
/ 05 апреля 2009

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

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

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

0 голосов
/ 05 апреля 2009

Думаю, что-то подобное поможет:


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

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

0 голосов
/ 05 апреля 2009

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

...