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