Python 如何更改框架内按钮标签上的文本?
我有一个框架,比如说:Python 如何更改框架内按钮标签上的文本?,python,tkinter,localization,Python,Tkinter,Localization,我有一个框架,比如说: import Tkinter as tk class Page1(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) label1 = G.tk.Label(self, text="Change me!") label1.pack(pady=10,padx=10) label2 = G.
import Tkinter as tk
class Page1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label1 = G.tk.Label(self, text="Change me!")
label1.pack(pady=10,padx=10)
label2 = G.tk.Label(self, text="Change me too!")
label2.pack(pady=10,padx=10)
现在,我希望能够通过按下页面上的按钮来更改“change me!”和“change me to!”文本。在我的实现中,这是为了本地化
我当前的实现只是为每种语言提供了单独的框架,但是维护起来非常麻烦。我希望每一页内容都有一个框架,并且只更改显示的文本。可能吗
我在文档中看到了
StringVar
,但没有关于如何使用它的非常明确的指南。您必须使用self.label1
和self.label2
才能以其他方法访问标签
您可以将功能分配到按钮
并使用self.label[“text”]=“new text”
使用
self.
以其他方法访问标签。您不必使用StringVar
来更改文本-您可以直接使用label1[“text”]=“new text”
,但您必须使用self.label1
以其他方法访问标签。这取决于您如何构建标签。第一个选项:您可以将所有标签存储在列表中,您可以在\uuuuu init\uuuuuu
上声明该列表,然后迭代通过。第二个选项:您可以通过继承的子项
dict进行迭代,在这里您可以检查每个子项的类型,以查看标签
等等(对于嵌套帧,有一个递归执行此操作的选项)。在这两种情况下,更改标签的文本将是相同的。
import tkinter as tk
class Page1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.label1 = tk.Label(self, text="Change me!")
self.label1.pack()
self.label2 = tk.Label(self, text="Change me too!")
self.label2.pack()
button = tk.Button(self, text="Change", command=self.change_text)
button.pack()
def change_text(self):
self.label1["text"] = "New text!"
self.label2["text"] = "New text too!"
root = tk.Tk()
Page1(root, None).pack()
root.mainloop()