@@ -332,6 +332,7 @@ def __init__(
332332 self .titles = [self .render_str (title ) for title in titles ]
333333 self ._tab_content : list [Widget ] = []
334334 self ._initial = initial
335+ self ._tab_counter = 0
335336 super ().__init__ (name = name , id = id , classes = classes , disabled = disabled )
336337
337338 @property
@@ -357,6 +358,15 @@ def _set_id(content: TabPane, new_id: int) -> TabPane:
357358 content .id = f"tab-{ new_id } "
358359 return content
359360
361+ def _generate_tab_id (self ) -> int :
362+ """Auto generate a new tab id.
363+
364+ Returns:
365+ An auto-incrementing integer.
366+ """
367+ self ._tab_counter += 1
368+ return self ._tab_counter
369+
360370 def compose (self ) -> ComposeResult :
361371 """Compose the tabbed content."""
362372
@@ -368,7 +378,7 @@ def compose(self) -> ComposeResult:
368378 if isinstance (content , TabPane )
369379 else TabPane (title or self .render_str (f"Tab { index } " ), content )
370380 ),
371- index ,
381+ self . _generate_tab_id () ,
372382 )
373383 for index , (title , content ) in enumerate (
374384 zip_longest (self .titles , self ._tab_content ), 1
@@ -424,7 +434,7 @@ def add_pane(
424434 if isinstance (after , TabPane ):
425435 after = after .id
426436 tabs = self .get_child_by_type (ContentTabs )
427- pane = self ._set_id (pane , tabs . tab_count + 1 )
437+ pane = self ._set_id (pane , self . _generate_tab_id () )
428438 assert pane .id is not None
429439 pane .display = False
430440 return AwaitComplete (
0 commit comments