How can I make tabs in pygtk close?

I am using python with gtk trying to make a simple tabbed text editor, I'm still a beginner, so I am wondering how can I make tabs lockable and accessible? it is much easier in qt, but I liked gtk more. this is my code:

import gtk from tab import * class Dash(gtk.Notebook): def __init__(self): super(gtk.Notebook,self).__init__() self.defaultTab() def defaultTab(self): tab = Tab() self.append_page(tab.child,tab.label) 

another tab module has some variables:

 from launchers import * class Tab(): def __init__(self): self.label = gtk.Label("New Tab") self.type = "dash" launchers = Launchers() self.child = launchers 

so what should i do?

+4
source share
2 answers

Instead of adding gtk.Label when adding a new page to gtk.Notebook you need to create gtk.HBox that contains both gtk.Label and gtk.Button . More or less, something like this:

 class Dash(gtk.Notebook): ... def defaultTab(self): self.append_page(tab.child,tab.header) ... class Tab(): def __init__(self): ... header = gtk.HBox() title_label = gtk.Label() image = gtk.Image() image.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU) close_button = gtk.Button() close_button.set_image(image) close_button.set_relief(gtk.RELIEF_NONE) self.connect(close_button, 'clicked', self.close_cb) header.pack_start(title_label, expand=True, fill=True, padding=0) header.pack_end(close_button, expand=False, fill=False, padding=0) header.show_all() self.header = header ... 

It is simple to display a close button. To actually close a tab, you need to process the clicked signal with a button.

+10
source

To make a reorderable tab, do this after calling append_page() :

 self.child_set_property(tab.child, 'reorderable', True) 

or

 self.set_tab_reorderable(tab.child, True) 

Here is a short example:

 import gtk win = gtk.Window(gtk.WINDOW_TOPLEVEL) notebook = gtk.Notebook() page1 = gtk.Label('This is the first page') page2 = gtk.Label('This is the second page') notebook.append_page(page1, gtk.Label('P1')) notebook.append_page(page2, gtk.Label('P2')) notebook.props.border_width = 12 notebook.set_tab_reorderable(page1, True) notebook.set_tab_reorderable(page2, True) win.add(notebook) win.connect('delete-event', gtk.main_quit) win.show_all() gtk.main() 
+4
source

Source: https://habr.com/ru/post/1390815/


All Articles