如何获取 tab_id 以将其设置为活动标签
how to get tab_id to set it as active tab
我正在尝试使用 tkinter 构建一个文本编辑器。我只是想使用静态 tab_id 将焦点设置在新打开的 tab.By 中,我可以立即设置它,但是如果我一次有超过 15 个选项卡,则很难找到 tab_id .我想要 tab_id 和 tab_name 或 tab_title 或任何其他方式
这是我的代码
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()
您可以通过笔记本的 built_in 功能执行此操作,例如:
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()
请注意,根据 docs,已经有一个 built_in 功能可以跟踪您的选项卡。您可以将 tabControl.select(new_tab)
new_tab 行替换为二进制数,因此第一个默认值将是 0,下一个将是 1,依此类推。
如果您出于任何原因想要以另一种方式进行跟踪,您可以每次都将 new_tab 存储在列表或字典中。如果您在这里遗漏了什么,请告诉我。
我正在尝试使用 tkinter 构建一个文本编辑器。我只是想使用静态 tab_id 将焦点设置在新打开的 tab.By 中,我可以立即设置它,但是如果我一次有超过 15 个选项卡,则很难找到 tab_id .我想要 tab_id 和 tab_name 或 tab_title 或任何其他方式
这是我的代码
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()
您可以通过笔记本的 built_in 功能执行此操作,例如:
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()
请注意,根据 docs,已经有一个 built_in 功能可以跟踪您的选项卡。您可以将 tabControl.select(new_tab)
new_tab 行替换为二进制数,因此第一个默认值将是 0,下一个将是 1,依此类推。
如果您出于任何原因想要以另一种方式进行跟踪,您可以每次都将 new_tab 存储在列表或字典中。如果您在这里遗漏了什么,请告诉我。