Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改框架内按钮标签上的文本?_Python_Tkinter_Localization - Fatal编程技术网

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