我正在创建具有多语言功能的软件。我正在考虑如何分隔和轻松调用不同语言的文本。这是我得到的:
import tkinter as tk # GUI
class Texts():
def __init__(self, txtENG, txtRU):
self.txtENG = txtENG
self.txtRU = txtRU
def txt_ENG(self):
return self.txtENG # should return English text
def txt_RU(self):
return self.txtRU # should return Russian text
language_Q = 'Choose the language:'
language_A = ['English','русский'] # two options for OptionMenu
txt_ENG_greetings = 'Hello!' # English text
txt_RU_greetings = 'Привет!' # Russian text
# initializing English and Russian texts to Texts class as greetings attribute
greetings = Texts(txt_ENG_greetings, txt_RU_greetings)
def secondstep():
# assigning methode as a variable according to chosen option
if q1.get() == 'English': language = Texts.txt_ENG
if q1.get() == 'русский': language = Texts.txt_RU
# label that should display greetings called by the right methode
greetings_label = tk.Label(window, text = greetings.language()).grid(row=3)
window.mainloop()
window = tk.Tk()
window.title('Hello StackerOverflow')
# option menu to choose the language
q1 = tk.StringVar(window); q1.set(language_Q)
w = tk.OptionMenu(window, q1, *language_A).grid(row=0);
# button to call secondstep function
button = tk.Button(window, text='Continue', command=secondstep).grid(row=1)
window.mainloop()
代码不起作用。我在使用methode作为参数时遇到问题。错误:
greetings_label = tk.Label(window, text = greetings.language()).grid(row=3)
AttributeError: 'Texts' object has no attribute 'language'
我花了很多时间尝试解决此问题,但一无所获,因此,如果不可能,什么是最佳选择?谢谢!
您需要更改第二步才能调用语言变量。因为对象文本没有方法language()
。此外,您需要存储对象的方法而不是类的方法才能实际运行它。
def secondstep():
# assigning methode as a variable according to chosen option
if q1.get() == 'русский':
language = greetings.txt_RU
else: # have a default selection.
language = greetings.txt_ENG
# label that should display greetings called by the right method
greetings_label = tk.Label(window, text=language()).grid(row=3)
window.mainloop()