2009-04-05 4 views
3

Я экспериментировал с WxPython,Изменение названия вкладки в wx.Notebook

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

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

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

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

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

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

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

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

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

ответ

-1

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

+0

просто попробовал, не работал – hasen

0

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


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

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

+0

Как это лучше, чем notebook.SetPageText (page_number, "title")? Кроме того, вам все равно нужно сначала найти «номер». – hasen

2

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

Существует wxNotebook :: GetSelection(), который возвращаетwxNOT _ НАЙДЕНО или индекс выбранной страницы, которые затем могут быть использованы для вызова wxNotebook :: SetPageText().

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

+0

Я не хочу делать предположение, что только выбранная страница может изменить каталог. – hasen

+2

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