如何使用变量更改标签选项

2024-04-26 22:37:40 发布

您现在位置:Python中文网/ 问答频道 /正文

from tkinter import *

root = Tk()
form = "root, text='Hello'"
Label(form).pack()
root.mainloop()

这是一个基本的例子,但前提不变。上面的代码输出一个错误,而下面的代码工作。有什么方法可以修复顶部的代码,使其像底部的代码一样工作吗?你知道吗

from tkinter import *

root = Tk()
Label(root, text='Hello').pack()
root.mainloop()

Tags: 代码textfromimportformhellotkinter错误
2条回答

对python来说form = "root, text='Hello'"实际上只是一个值为"root, text='Hello'"的字符串变量。当您尝试在函数/方法中使用它时,它会被视为一个sting,如果该函数/方法不是为处理该string对象而设计的,那么它将出错。tkinter小部件通常将其第一个值作为容器对象。以下参数用逗号分隔,通常都是关键字参数。Button方法无法知道您希望它将该字符串转换为关键字参数或位置参数。你必须按照设计的方式来做。你知道吗

您可以传递一个包含字符串或其他值(如整数/浮点)的变量作为关键字参数text的读取方式可以读取字符串、int、boolean等内容。你知道吗

像这样的事情很好:

import tkinter as tk


root = tk.Tk()

text_var = 'Hello'
tk.Label(root, text=text_var).pack()

root.mainloop()

如果您希望既能使用起始变量值,又能使用一些可以更新的值,那么可以使用StringVar()来更新标签文本,方法是使用textvariable参数。你知道吗

import tkinter as tk


root = tk.Tk()

label_var = tk.StringVar()
label_var.set('Testing')


def update_label():
    label_var.set('Updated Label')


tk.Label(root, textvariable=label_var).pack()
tk.Button(root, text='Update Label', command=update_label).pack()

root.mainloop()

也可以使用config方法简单地更新函数中的标签。你知道吗

import tkinter as tk


root = tk.Tk()


def update_label():
    label.config(text='Updated Label')


label = tk.Label(root, text='Testing')
label.pack()
tk.Button(root, text='Update Label', command=update_label).pack()

root.mainloop()

您不希望将root, text=部分存储在变量中。要使标签文本变化,请将文本仅存储在变量中,如下所示:

message = "Hello"
Label(root, text=message).pack()

通过这种方式,您可以改变发生变化的部分,同时保留roottext作为固定标识符。标识符应该直接写在源代码中。变量中不存储变量名。你知道吗

相关问题 更多 >