Python 如何获取选项卡id以将其设置为活动选项卡

Python 如何获取选项卡id以将其设置为活动选项卡,python,tkinter,tkinter-layout,Python,Tkinter,Tkinter Layout,我正在尝试使用tkinter构建一个文本编辑器。我只是想在新打开的选项卡中设置焦点。通过使用静态选项卡id,我可以立即设置焦点,但如果一次有超过15个选项卡,则很难找到选项卡id。我想要带标签名或标签标题的标签id或任何其他方式 这是我的密码 import tkinter as tk from tkinter import ttk, filedialog import os root = tk.Tk() root.title("Tab Widget") tabControl

我正在尝试使用tkinter构建一个文本编辑器。我只是想在新打开的选项卡中设置焦点。通过使用静态选项卡id,我可以立即设置焦点,但如果一次有超过15个选项卡,则很难找到选项卡id。我想要带标签名或标签标题的标签id或任何其他方式
这是我的密码

import tkinter as tk
from tkinter import ttk, filedialog
import os

root = tk.Tk()
root.title("Tab Widget")
tabControl = ttk.Notebook(root)


def open_file(event=None):
    file1 = filedialog.askopenfile(mode='r', initialdir=os.getcwd(), filetypes=(('All files', '*.*'), ('Text files', '*.txt'))).name
    with open(file1) as f:
        content_in_file = f.read()
        new_tab = TabWin(tabControl, f'{file1.rsplit("/", 1)[-1]}').create_tab()
    new_tab.delete(1.0, tk.END)
    new_tab.insert(1.0, content_in_file)

class TabWin:
    def __init__(self, parent, title, text=None, file_path=None):
        self.parent = parent
        self.tab_title = title
        self.text = text
        self.tab_id = title
        self.tab = tk.Text(parent)

    def create_tab(self):
        self.parent.add(self.tab, text=self.tab_title)
        return self.tab

tab3 = TabWin(tabControl, 'pavan').create_tab()
tabControl.pack(expand=1, fill="both")
root.bind('<Control o>', open_file)
root.mainloop()
将tkinter作为tk导入
从tkinter导入ttk,文件对话框
导入操作系统
root=tk.tk()
root.title(“选项卡小部件”)
tabControl=ttk.Notebook(根目录)
def open_文件(事件=无):
file1=filedialog.askopenfile(mode='r',initialdir=os.getcwd(),filetypes=('All files','*.'),('Text files','*.txt'))。name
打开(文件1)作为f:
文件中的内容=f.read()
new_tab=TabWin(tabControl,f'{file1.rsplit(“/”,1)[-1]}')。create_tab()
新选项卡删除(1.0,tk.END)
新的\u选项卡。插入(1.0,内容\u在\u文件中)
TabWin类:
def uu init uuu(self,parent,title,text=None,file_path=None):
self.parent=parent
self.tab_title=标题
self.text=文本
self.tab_id=标题
self.tab=tk.Text(父级)
def创建_选项卡(自身):
self.parent.add(self.tab,text=self.tab\u title)
返回self.tab
tab3=TabWin(tabControl,'pavan')。创建_tab()
tabControl.pack(expand=1,fill=“两者”)
root.bind(“”,打开_文件)
root.mainloop()


您可以通过笔记本电脑的内置功能实现这一点,如:

import tkinter as tk
from tkinter import ttk, filedialog
import os

root = tk.Tk()
root.title("Tab Widget")
tabControl = ttk.Notebook(root)


def open_file(event=None):
    file1 = filedialog.askopenfile(mode='r', initialdir=os.getcwd(), filetypes=(('All files', '*.*'), ('Text files', '*.txt'))).name
    with open(file1) as f:
        content_in_file = f.read()
        new_tab = TabWin(tabControl, f'{file1.rsplit("/", 1)[-1]}').create_tab()
    new_tab.delete(1.0, tk.END)
    new_tab.insert(1.0, content_in_file)
    tabControl.select(new_tab)

class TabWin:
    def __init__(self, parent, title, text=None, file_path=None):
        self.parent = parent
        self.tab_title = title
        self.text = text
        self.tab_id = title
        self.tab = tk.Text(parent)

    def create_tab(self):
        self.parent.add(self.tab, text=self.tab_title)
        return self.tab

tab3 = TabWin(tabControl, 'pavan').create_tab()
tabControl.pack(expand=1, fill="both")
root.bind('<Control o>', open_file)
root.mainloop()
将tkinter作为tk导入
从tkinter导入ttk,文件对话框
导入操作系统
root=tk.tk()
root.title(“选项卡小部件”)
tabControl=ttk.Notebook(根目录)
def open_文件(事件=无):
file1=filedialog.askopenfile(mode='r',initialdir=os.getcwd(),filetypes=('All files','*.'),('Text files','*.txt'))。name
打开(文件1)作为f:
文件中的内容=f.read()
new_tab=TabWin(tabControl,f'{file1.rsplit(“/”,1)[-1]}')。create_tab()
新选项卡删除(1.0,tk.END)
新的\u选项卡。插入(1.0,内容\u在\u文件中)
tabControl.select(新建选项卡)
TabWin类:
def uu init uuu(self,parent,title,text=None,file_path=None):
self.parent=parent
self.tab_title=标题
self.text=文本
self.tab_id=标题
self.tab=tk.Text(父级)
def创建_选项卡(自身):
self.parent.add(self.tab,text=self.tab\u title)
返回self.tab
tab3=TabWin(tabControl,'pavan')。创建_tab()
tabControl.pack(expand=1,fill=“两者”)
root.bind(“”,打开_文件)
root.mainloop()
请注意,根据的,已经有一个内置的功能来跟踪您的标签。您只需在
tabControl.select(new\u tab)
new\u tab的行中替换二进制数,第一个默认值为0,第二个默认值为1,依此类推

如果您出于任何原因想以另一种方式跟踪,您可以在列表或口述中每次存储新的_选项卡。如果你遗漏了什么,请告诉我