Я пытался создать пользовательскую вкладку в блокноте, используя ttk.style
.. Я искал ее в стеке, и я нашел свое решение в этот ответ и работал отлично, затем я внедрил его в свою программу, и все прошло отлично, ноу меня не было кнопки выхода .. или она не выдает никакой ошибки .. я не могу решить проблему ... вот мой код, спасибо за помощь.
import tkinter.ttk as ttks
from tkinter import X,Y,LEFT,RIGHT,BOTH,PhotoImage
from PIL import Image,ImageTk
class main:
__initialized = False
def __init__(self,master,**kwargs):
self.master = master
self._tb = []
self._txt = []
self._active = None
if not self.__initialized:
self.__initialize_custom_style()
self.__inititialized = True
self.nb = ttks.Notebook(self.master)
self.nb.pack(fill=BOTH,expand=1)
kwargs["style"] = "nb"
self.frame = ttks.Frame(self.nb)
self.nb.add(self.frame,text="check")
self.nb.bind("<ButtonPress-1>", self.on_close_press, True)
self.nb.bind("<ButtonRelease-1>", self.on_close_release)
def on_close_press(self,event):
element = self.nb.identify(event.x, event.y)
if "close" in element:
index = self.nb.index("@%d,%d" % (event.x, event.y))
self.nb.state(['pressed'])
self._active = index
def on_close_release(self, event):
if not self.nb.instate(['pressed']):
return
element = self.nb.identify(event.x, event.y)
index = self.nb.index("@%d,%d" % (event.x, event.y))
if "close" in element and self._active == index:
self.nb.forget(index)
self.nb.event_generate("<<NotebookTabClosed>>")
self.nb.state(["!pressed"])
self._active = None
def __initialize_custom_style(self):
style = ttks.Style()
self.images = (
PhotoImage("img_close", data=''' R0lGODlhCAAIAMIBAAAAADs7O4+Pj9nZ2Ts7Ozs7Ozs7Ozs7OyH+EUNyZWF0ZWQg d2l0aCBHSU1QACH5BAEKAAQALAAAAAAIAAgAAAMVGDBEA0qNJyGw7AmxmuaZhWEU
5kEJADs=
'''),
PhotoImage("img_closepressed", data='''
R0lGODlhCAAIAMIEAAAAAOUqKv9mZtnZ2Ts7Ozs7Ozs7Ozs7OyH+EUNyZWF0ZWQg
d2l0aCBHSU1QACH5BAEKAAQALAAAAAAIAAgAAAMVGDBEA0qNJyGw7AmxmuaZhWEU
5kEJADs=
'''),
PhotoImage("img_closeactive", data='''
R0lGODlhCAAIAMIEAAAAAP/SAP/bNNnZ2cbGxsbGxsbGxsbGxiH5BAEKAAQALAAA
AAAIAAgAAAMVGDBEA0qNJyGw7AmxmuaZhWEU5kEJADs=
''')
)
style.element_create("close", "image", "img_close",
("active", "pressed", "!disabled", "img_closepressed"),
("active", "!disabled", "img_closeactive"), border=8, sticky='')
style.layout("nb", [("nb.client", {"sticky": "nswe"})])
style.layout("nb.Tab", [
("nb.tab", {
"sticky": "nswe",
"children": [
("nb.padding", {
"side": "top",
"sticky": "nswe",
"children": [
("nb.focus", {
"side": "top",
"sticky": "nswe",
"children": [
("nb.label", {"side": "left", "sticky": ''}),
("nb.close", {"side": "left", "sticky": ''}),
]
})
]
})
]
})
])
if __name__ =="__main__":
root = ttks.tkinter.Tk()
main(root)
root.mainloop()
здесь вывод