Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Glade и вкладки как в браузере  (Прочитано 1027 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн juskobe

  • Автор темы
  • Участник
  • *
  • Сообщений: 116
    • Просмотр профиля
Glade и вкладки как в браузере
« : 17 Мая 2010, 13:58:21 »
Пишу тут 1 проектик для себя на Python. Надо сделать "вкладки" как в браузере. Тоесть чтобы их можно закрывать, перемещать в пределах панели Notebook.

Кто-то сталкивался с такой задачей?

Читал маны, но про работу с вкладками написано скудновато.

Основная перспективная задача, чтобы новая вкладка открывалась по двойному клику по мункту из боковой панели TreeView. Аля "Вид-Боковая панель-Закладки" в Firefox.
« Последнее редактирование: 17 Мая 2010, 14:21:47 от GriGor1Z »

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Glade и вкладки как в броузере
« Ответ #1 : 17 Мая 2010, 14:08:44 »
использовать
tree.bind('<Double-1>', d_click)
tree.bind('<<TreeviewSelect>>', click)

ну и http://www.tkdocs.com/
в помощь

Оффлайн juskobe

  • Автор темы
  • Участник
  • *
  • Сообщений: 116
    • Просмотр профиля
Re: Glade и вкладки как в броузере
« Ответ #2 : 17 Мая 2010, 14:11:35 »
Почитал. Я так понял это тулкит как замена Gladu?
« Последнее редактирование: 17 Мая 2010, 14:17:41 от GriGor1Z »

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Glade и вкладки как в броузере
« Ответ #3 : 17 Мая 2010, 14:15:24 »
d_click и click - это название моих функций, я просто скопировал из своего кода.
соответственно вызываются по событиям двойного клика и одного клика...
вам остается разобраться: как в функции двойного клика добавить в ttk.Notebook  вкладку.

Оффлайн juskobe

  • Автор темы
  • Участник
  • *
  • Сообщений: 116
    • Просмотр профиля
Re: Glade и вкладки как в броузере
« Ответ #4 : 17 Мая 2010, 14:21:30 »
Вообщем ясно, спасибо, пойду разбираться и пробовать.

Почитал, все же не хочу использовать Tk т.к. хочется PyGTK и не хочется перерисовывать разухабесты интрефейс.

Но вот интересно, как поместить на кажду вкладку кнопку "Х" (закрыть). С отстальным вроде разобрался.

def create_tab(self, title):
        #hbox will be used to store a label and button, as notebook tab title
        hbox = gtk.HBox(False, 0)
        label = gtk.Label(title)
        hbox.pack_start(label)

        #get a stock close button image
        close_image = gtk.image_new_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU)
        image_w, image_h = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)

        #make the close button
        btn = gtk.Button()
        btn.set_relief(gtk.RELIEF_NONE)
        btn.set_focus_on_click(False)
        btn.add(close_image)
        hbox.pack_start(btn, False, False)

        #this reduces the size of the button
        style = gtk.RcStyle()
        style.xthickness = 0
        style.ythickness = 0
        btn.modify_style(style)

        hbox.show_all()

        #the tab will have a single widget: a label
        widget = gtk.Label(title)

        #add the tab
        self.notebook.insert_page(widget, hbox)

        #connect the close button
        btn.connect('clicked', self.on_closetab_button_clicked, widget)

    def on_closetab_button_clicked(self, sender, widget):
        #get the page number of the tab we wanted to close
        pagenum = self.notebook.page_num(widget)
        #and close it
        self.notebook.remove_page(pagenum)
« Последнее редактирование: 17 Мая 2010, 15:06:17 от GriGor1Z »

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Glade и вкладки как в браузере
« Ответ #5 : 17 Мая 2010, 15:46:06 »
к сожалению я с pyGTK не работал

 

Страница сгенерирована за 0.046 секунд. Запросов: 25.