如何更改框架内按钮标签上的文本?

时间:2017-12-13 14:37:43

标签: 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.tk.Label(self, text="Change me too!")
        label2.pack(pady=10,padx=10)

现在我希望能够改变“改变我!”和“改变我!”通过按页面上的按钮来发送文本。在我的实现中,这是出于本地化目的。

我目前的实现只针对每种语言都有单独的框架,但维护起来非常麻烦。我想为每个内容页面只有一个框架,并且只更改显示的文本。这可能吗?

我在文档中看到了StringVar,但没有关于如何使用它的非常清晰的指南。

1 个答案:

答案 0 :(得分:1)

您必须使用self.label1self.label2才能访问其他方法中的标签。

您可以将功能分配到Button并使用self.label["text"] = "new text"

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()