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)