gpt4 book ai didi

python - 使用 "pointer"更新 tkinter 小部件参数

转载 作者:行者123 更新时间:2023-12-01 02:30:12 25 4
gpt4 key购买 nike

如果我使用参数 fg = PRIMARY_COLOR 创建一个 tkinter.Label ,然后使用 .pack() 它,如果我更改PRIMARY_COLOR 变量,调用 widget 的 .update() 方法,前景色不会改变。我知道为什么会发生这种情况,但是我可以以某种方式让小部件随着 PRIMARY_COLOR 变量的变化而改变前景色吗?我可以做某种“指针”吗?

最佳答案

正如布莱恩所说,你无法完全做你想做的事,但你可以接近。

下面的代码使用 StringVar 的 .trace 方法在 StringVar 发生更改时更改标签颜色。它使用 Entry 来更改 StringVar,但您必须使用该 Entry:只要将 StringVar 设置为新值,回调就会更改“hello”标签的配置。您可以输入标准颜色名称(例如“红色”)或十六进制代码(例如“#ff8800”)。

import tkinter as tk

root = tk.Tk()

label = tk.Label(root, text='hello')
label.pack()

# A StringVar that changes the Label color whenever its value is changed
label_color = tk.StringVar()
label_color.trace("w", lambda *args: label.config(fg=label_color.get()))

# An Entry where we can specify the new color
tk.Label(root, text='Enter a color name or hex number').pack()
e = tk.Entry(root)
e.pack()

# Set the StringVar to the string that the user just entered
def set_colorstring(evt):
s = evt.widget.get()
if s:
label_color.set(s)

e.bind("<Return>", set_colorstring)

root.mainloop()

可以使用此技术来更改多个小部件的配置,但您必须显式地执行此操作(例如,在回调中循环遍历小部件列表)。不幸的是,您不能只将 fg 属性设置为 StringVar 并让它自动更新颜色。

关于python - 使用 "pointer"更新 tkinter 小部件参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46916293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com