python - Python 如何更改 tkinter Notebook 中已创建选项卡的文本
问题描述
我不知道如何更改和访问已创建的 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 记事本选项卡中的文本?
解决方案
ttk 小部件有时与 tk 小部件的工作方式略有不同。在笔记本选项卡的情况下,您可以使用方法设置选项卡的选项tab
。如果您不提供选项卡索引以外的任何参数,则此方法将返回表示选项的字典。您的代码正在更改字典,更改字典不会更改实际的小部件。
要更改选项,请将选项名称和新值作为tab
方法的参数提供。例如:
tabs.tab("current", text=["Options", "Opsies"][my_lang])
推荐阅读
- arrays - 创建一个持久数组
- javascript - 阵列连接按钮?
- assembly - 绕行功能崩溃
- python - 从 mayavi 场景中删除工具栏
- sql - ORA-02291 - “违反完整性约束 - 未找到父键” - 仅插入很少的错误
- html - 如何从视频链接中点击并让它在下面的区域播放?
- c# - C# 运算符“+”不能应用于“IntPtr”和“int”类型的操作数
- asp.net - Unity DI - C# 依赖注入如何与存储库类构造函数一起使用?它仅适用于控制器?
- python - 在 Python 中读取文本文件的重复数字
- java - 如何将在另一个类中获取的网络数据返回到 Android MainActivity?