Tkinter和多语言

时间:2017-02-04 18:38:28

标签: python tkinter internationalization multilingual

我对使用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。

我是编程新手,不确定这种方式是否最好(因为我可以避免重新初始化),只是请你建议我新的解决方案或评论我。

1 个答案:

答案 0 :(得分:1)

您可以使用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)