0

我就是想不出来这个??

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

似乎它应该很简单,但我就是不明白。感谢您提供任何帮助。

4

1 回答 1

0

只需在函数内部进行分配rndfont,只需创建一个局部变量;没有效果。

用于canvas.itemconfig更改字体。(在此之前,您应该保存 的返回值create_text)。

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()
于 2013-10-18T13:17:27.913 回答