【发布时间】:2015-12-01 14:24:11
【问题描述】:
我正在尝试将不同的字符串传递给使用循环函数在网格内创建的画布文本。文本绑定了事件处理程序,打印证明应该可以在事件触发时改变,但我还没想好怎么做。
考虑以下代码:
from Tkinter import *
def create_grid():
rows=2
cols=2
canvasID = 0
for r in range(rows):
c=0
for col in range(cols):
cv=Canvas(bg='white',width=200,height=150)
cv.grid(row=r,column=c)
imageFile=PhotoImage(width=200,height=150)
imageFile.put('black',to=(0,0,197,147))
cv.image=imageFile
cv.create_image(200/2,150/2,anchor=CENTER,image=imageFile)
txt=cv.create_text(200/2,150/2,fill='white',anchor=CENTER,font=("Arial",18,'bold'),text=var.get())
def enter_lambda(canvasID):
return lambda event:on_enter(event,canvasID)
def leave_lambda(canvasID):
return lambda event:on_leave(event,canvasID)
cv.bind("<Enter>", enter_lambda(canvasID))
cv.bind("<Leave>", leave_lambda(canvasID))
canvasID+=1
c+=1
r+=1
def on_enter(event,canvasID,*args):
var="in"
print var,str(canvasID)
def on_leave(event,canvasID,*args):
var="out"
print var,str(canvasID)
root=Tk()
app=Frame(root)
var=StringVar()
var.set("out")
create_grid()
root.mainloop()
可以在How to add a Tkinter Text Variable in canvas text 找到类似的问题,尽管使用这种方法没有奏效,我不知道为什么。
【问题讨论】:
-
不清楚您期望发生什么。你能描述一下效果吗?当我进入方格 #2 时,会发生什么?
-
澄清一下,效果应该是,如果您移动到方格 #2,文本应更改为“IN 2”,对于方格#3 为“IN 3”等。此外,当您离开方格时它应该能够指出还剩下哪个方格。
标签: javascript python canvas tkinter