我不知道如何更改和访问已创建的ttk.Notebook选项卡。我不知道如何访问特定标签,甚至“当前”也不起作用。这是我的代码:
from tkinter import *
from tkinter import ttk
app = Tk()
tabs = ttk.Notebook(app) # Create Tab Control
options_tab = ttk.Frame(tabs) # Create a tab
tabs.add(options_tab, text='Options') # Add the tab
tabs.pack(expand=1, fill="both") # Pack to make visible
lang_dct = {
"en": 0,
"af": 1
}
my_lang = lang_dct['en']
print(my_lang)
# New language chosen here
lang_l = Label(options_tab)
lang_l.config(text=["Choose language",
"Kies taal"][my_lang])
lang_l.grid(row=0, column=0)
def on_select(event=None):
print('----------------------------')
if event: # <-- this works only with bind because `command=` doesn't send event
print("event.widget:", event.widget.get())
global my_lang
cb = event.widget.get()
if cb == "English":
my_lang = 0
elif cb == "Afrikaans":
my_lang = 1
print(my_lang)
change_lang()
def change_lang():
lang_l.config(text=["Choose language",
"Kies taal"][my_lang])
print(tabs)
print(tabs.tab("current"))
tabs.tab("current")['text'] = ["Options",
"Opsies"][my_lang]
language_cb = ttk.Combobox(options_tab, values=("English", "Afrikaans"))
language_cb.grid(row=1, column=0)
language_cb.bind('<<ComboboxSelected>>', on_select)
app.mainloop()
我可以打印当前标签,但不能以任何方式进行更改。如何在ttk tkinter记事本选项卡中更改文本?
答案 0 :(得分:2)
ttk窗口小部件有时的工作方式与tk窗口小部件有所不同。对于笔记本标签,可以使用tab
方法设置标签的选项。如果您不提供选项卡索引以外的任何参数,则此方法将返回表示选项的字典。您的代码正在更改字典,更改字典不会更改实际的小部件。
要更改选项,请将选项名称和新值作为tab
方法的参数。例如:
tabs.tab("current", text=["Options", "Opsies"][my_lang])