Tkinter 和多语言
Tkinter and multilanguage
我对使用 tkinter 创建的应用程序有疑问。
应用程序即将创建,但现在必须添加其他选项。
我必须为小部件名称和组合框选项添加额外的语言。
这是关于如何初始化我的小部件的代码片段:
DISTRICTS = ["A", "B", "C"]
dist_lable = tkinter.Label(self.parent, text="Seller Name")
dist_name = tkinter.ttk.Combobox(self.parent, textvariable=dist_var, state="readonly",
values=DISTRICTS)
我想添加 radiobuttons\entry 让用户能够选择语言。
此应用程序还会在用户关闭时保存一些选定的选项,并在下次启动时加载设置。在我的 init 方法之后定义的自动加载函数。
我想我也可以将用户选择的语言保存到配置文件,然后使用这个选项来使用选择的语言。
现在我需要选择实现此目的的最佳方法,但我目前只找到一个解决方案:加载我之前的配置的函数后,使用语言选项重新初始化我的应用程序:
这里是例子(假设LANG = AZ
):
ENG, AZ = 1,2
DISTRICTS = ["A", "B", "C"],[["D", "E", "F"]
dist_lable = tkinter.Label(self.parent, text=["Seller Name","Satici Adi"][LANG])
dist_name = tkinter.ttk.Combobox(self.parent, textvariable=dist_var, state="readonly",
values=DISTRICTS[LANG])
在此解决方案中,我的应用程序将使用默认语言进行初始化,并将在找到配置文件或用户在 GUI 中选择其他语言时重新初始化。
我还认为我可以在 tkinter 之前编写一些代码,这将尝试在 tkinter mainloop() 之前从配置文件加载 LANG。
我是编程新手,不确定这种方式是否最好(因为我可以避免重新初始化),请您给我建议新的解决方案或评论我的。
您可以使用 widget.config(**options)
即时更改文本。例如:
# New language chosen here
dist_label.config(text=["Seller name", "Naam verkoper"][LANG])
您也可以尝试使用 StringVar()
var = Tkinter.StringVar()
var.set(["Seller name", "Naam verkoper"][LANG])
lbl = Tkinter.Label(root, textvariable=var)
我对使用 tkinter 创建的应用程序有疑问。 应用程序即将创建,但现在必须添加其他选项。
我必须为小部件名称和组合框选项添加额外的语言。 这是关于如何初始化我的小部件的代码片段:
DISTRICTS = ["A", "B", "C"]
dist_lable = tkinter.Label(self.parent, text="Seller Name")
dist_name = tkinter.ttk.Combobox(self.parent, textvariable=dist_var, state="readonly",
values=DISTRICTS)
我想添加 radiobuttons\entry 让用户能够选择语言。
此应用程序还会在用户关闭时保存一些选定的选项,并在下次启动时加载设置。在我的 init 方法之后定义的自动加载函数。 我想我也可以将用户选择的语言保存到配置文件,然后使用这个选项来使用选择的语言。
现在我需要选择实现此目的的最佳方法,但我目前只找到一个解决方案:加载我之前的配置的函数后,使用语言选项重新初始化我的应用程序:
这里是例子(假设LANG = AZ
):
ENG, AZ = 1,2
DISTRICTS = ["A", "B", "C"],[["D", "E", "F"]
dist_lable = tkinter.Label(self.parent, text=["Seller Name","Satici Adi"][LANG])
dist_name = tkinter.ttk.Combobox(self.parent, textvariable=dist_var, state="readonly",
values=DISTRICTS[LANG])
在此解决方案中,我的应用程序将使用默认语言进行初始化,并将在找到配置文件或用户在 GUI 中选择其他语言时重新初始化。
我还认为我可以在 tkinter 之前编写一些代码,这将尝试在 tkinter mainloop() 之前从配置文件加载 LANG。
我是编程新手,不确定这种方式是否最好(因为我可以避免重新初始化),请您给我建议新的解决方案或评论我的。
您可以使用 widget.config(**options)
即时更改文本。例如:
# New language chosen here
dist_label.config(text=["Seller name", "Naam verkoper"][LANG])
您也可以尝试使用 StringVar()
var = Tkinter.StringVar()
var.set(["Seller name", "Naam verkoper"][LANG])
lbl = Tkinter.Label(root, textvariable=var)