Variables 如何使用变量更改画布上的字体?

Variables 如何使用变量更改画布上的字体?,variables,canvas,fonts,tkinter,Variables,Canvas,Fonts,Tkinter,我就是搞不懂这个 from Tkinter import * root=Tk() rndfont=StringVar() rndfont=("Purisa", 10) def change(): rndfont=("Purisa", 20, "bold") canvas=Canvas(root, width=500, height=500) canvas.pack() canvas.create_text(50, 20, font=(rndfont), text="change")

我就是搞不懂这个

from Tkinter import *

root=Tk()
rndfont=StringVar()

rndfont=("Purisa", 10)
def change():
   rndfont=("Purisa", 20, "bold")

canvas=Canvas(root, width=500, height=500)
canvas.pack()
canvas.create_text(50, 20, font=(rndfont), text="change")

button1 = Button(canvas, text = "change font", command = change, anchor = W)
button1.configure(width = 10, activebackground = "#33B5E5", relief = FLAT)
button1_window = canvas.create_window(50, 50, anchor=NW, window=button1)
root.mainloop()

看起来应该很简单,但我就是不明白。感谢您的帮助。

只需在函数中赋值
rndfont
,只需创建一个局部变量;没有效果

用于更改字体。(在此之前,应保存的返回值)

从Tkinter导入*
root=Tk()
rndfont=(“普里萨”,10)
def change():
rndfont=(“Purisa”,20,“bold”)#-->创建局部变量。全局变量不改变。

canvas.itemconfig(text,font=rndfont)#非常感谢!我试着使用全局变量,但恐怕我把它复杂化了。再次感谢。为什么要将rndfont设置为StringVar,然后立即将其更改为tuple?@BryanOakley,代码来自OP的代码。我删除了
StringVar
。谢谢你的评论。
from Tkinter import *

root=Tk()

rndfont=("Purisa", 10)
def change():
   rndfont=("Purisa", 20, "bold") # --> Create local variable. Global varialbe does not change.
   canvas.itemconfig(text, font=rndfont) # <---

canvas=Canvas(root, width=500, height=500)
canvas.pack()
text = canvas.create_text(50, 20, font=(rndfont), text="change")
#^^^
button1 = Button(canvas, text = "change font", command = change, anchor = W)
button1.configure(width = 10, activebackground = "#33B5E5", relief = FLAT)
button1_window = canvas.create_window(50, 50, anchor=NW, window=button1)
root.mainloop()