Lost images on tabs ttk.notebook

ingo <[email protected]>
Newsgroups gmane.comp.python.tkinter
Message-ID <[email protected]>
I'm trying to create a simple tabbed editor and merged two examples 
found on the web. One of those is the one with the closing images on the 
tabs. In the proces of understanding I somehowe lost the images on the 
tabs but not the fuctionality of clicking on the right position of the tabs.

What is going wrong?

TIA, Ingo

import os
from tkinter import *
from tkinter import ttk

class OPMLnotebook(Frame):

     def __init__(self):
         Frame.__init__(self)
         self.master.title('OPML Notebook')
         self._create_panel()

     def _tabbtn_press(self, event):
         x, y, widget = event.x, event.y, event.widget
         elem = widget.identify(x, y)
         index = widget.index("@%d,%d" % (x, y))
         if "close" in elem:
             widget.state(['pressed'])
             widget.pressed_index = index

     def _tabbtn_release(self, event):
         x, y, widget = event.x, event.y, event.widget
         if not widget.instate(['pressed']):
             return
         elem =  widget.identify(x, y)
         index = widget.index("@%d,%d" % (x, y))
         if "close" in elem and widget.pressed_index == index:
             widget.forget(index)
             widget.event_generate("<<NotebookClosedTab>>")
         widget.state(["!pressed"])
         widget.pressed_index = None

     def _create_panel(self):

         imgdir = os.path.join(os.path.dirname(__file__), 'img')
         i1 = PhotoImage("img_close", file=os.path.join(imgdir, 
'close.gif'))
         i2 = PhotoImage("img_closeactive", file=os.path.join(imgdir, 
'close_active.gif'))
         i3 = PhotoImage("img_closepressed", file=os.path.join(imgdir, 
'close_pressed.gif'))

         style = ttk.Style()
         style.element_create("close", "image", "img_close",
             ("active", "pressed", "!disabled", "img_closepressed"),
             ("active", "!disabled", "img_closeactive"), border=10, 
sticky='')
         style.layout("ButtonNotebook", [("ButtonNotebook.client", 
{"sticky": "nswe"})])
         style.layout("ButtonNotebook.Tab", [
             ("ButtonNotebook.tab", {"sticky": "nswe", "children":
                 [("ButtonNotebook.padding", {"side": "top", "sticky": 
"nswe",
                                              "children":
                     [("ButtonNotebook.label", {"side": "left", 
"sticky": ''}),
                     ("ButtonNotebook.close", {"side": "left", "sticky": 
''})]
                 })]
             })]
         )

         self.bind_class("TNotebook", "<ButtonPress-1>", 
self._tabbtn_press, True)
         self.bind_class("TNotebook", "<ButtonRelease-1>", 
self._tabbtn_release)

         nb = ttk.Notebook(width=400, height=400, style="ButtonNotebook")
         nb.pressed_index = None
         nb.enable_traversal()
         nb.pack(fill='both', expand=1)
         self._create_text_tab(nb)
         self._create_text_tab(nb)

     def _create_text_tab(self, nb):
         frame = Frame(nb)
         txt = Text(frame, wrap=WORD, width=40, height=10)
         vscroll = Scrollbar(frame, orient=VERTICAL, command=txt.yview)
         txt['yscroll'] = vscroll.set
         vscroll.pack(side=RIGHT, fill=Y)
         txt.pack(fill='both', expand=Y)
         nb.add(frame, text='Text Editor', underline=0)


if __name__ == '__main__':
     OPMLnotebook().mainloop()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.