LINUX.ORG.RU

[pygtk] Получить текст с label

 


0

0

Доброго времени суток LOR. Проблема в следующем: на форме есть gtk.NoteBook с несколькими табами. Пытаюсь получить текс label расположенном на текущем табе:

tab_label_checker = notebook.get_tab_label_text(notebook.get_nth_page(notebook.get_current_page()))
Но получаю почему-то None. В чем может быть проблема? Спасибо


Нашел в хэлпе: get_tab_label_text: returnvalue: the text of the tab label, or None if the tab label widget is not a gtk.Label. У меня действительно не gtk.Label. Кто сталкивался как в таком случае можно вытянуть текст label?

shk
() автор топика
Ответ на: комментарий от yltsrc

Дело в том что на табе распологается gtk.HBox, на котором в свою очередь распологаются gtk.Label и gtk.Button для закрытия самого таба

shk
() автор топика
Ответ на: комментарий от k_andy

Возвращает все равно gtk.HBox. Вот не пойму как от сюда вытянуть текст.

shk
() автор топика

На gtk писал только на с, но разницы нет, думаю. GtkHBox является потомком GtkContainer, из которого, собственно, можно вытащить все виджеты, которые в нём содержаться. Ну или натравить на них функцию, которая найдёт среди них метку и выдерет из неё текст. Документация по Gtk, конечно, сильно далека от идеала, но такие элементарные вещи там находятся на раз.

Gvidon ★★★★
()

Можно вообще сделать класс, производный от HBox, который будет использоваться для табов в Notebook. Тогда вообще всё будет красиво и логично (нет, у меня нет ооп головного мозга)

Gvidon ★★★★
()
Ответ на: комментарий от Gvidon

GtkHBox является потомком GtkContainer, из которого, собственно, можно вытащить все виджеты, которые в нём содержаться

Хорошая мысль буду копать в этом направлении. спасибо.

shk
() автор топика
Ответ на: комментарий от Gvidon

Решено

Gvidon, еще раз спасибо вам и всем кто принимал участие в теме. Решение выглядит так (может кому пригодится):

hbox = self.get_tab_label(self.get_nth_page(self.get_current_page()))

label_of_tab = hbox.get_children()
label_of_tab[0].get_text()
shk
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.