如何使函数中的tkinter画布文本变量
How to make tkinter canvas text variable in function
我正试图将不同的字符串传递给使用循环函数在网格中创建的画布文本。文本被绑定到事件处理程序,打印证明它应该能够在事件被触发时进行更改,但我还没有弄清楚如何做到这一点
考虑以下代码:
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()
在"如何在画布文本中添加Tkinter文本变量"中也可以找到类似的问题,尽管使用这种方法不起作用,我也不知道为什么。
我想你想要的是,当鼠标在正方形内时,正方形中的单词为"in",当鼠标位于正方形外时,单词为"OUT"。
如果是这样的话,有很多方法可以做到这一点。最简单的方法是将文本项的id传递给回调,然后使用itemconfigure
来更改值。您不需要使用StrngVar
来实现此操作。
例如:
txt=cv.create_text(..., text="OUT")
...
def enter_lambda(canvasID, textID):
return lambda event:on_enter(event,canvasID, textID)
def leave_lambda(canvasID, textID):
return lambda event:on_leave(event,canvasID, textID)
...
cv.bind("<Enter>", enter_lambda(canvasID, txt))
cv.bind("<Leave>", leave_lambda(canvasID, txt))
...
def on_enter(event,canvasID, txt):
cv = event.widget
cv.itemconfigure(txt, text="IN %s" % canvasID)
def on_leave(event,canvasID, txt):
cv = event.widget
cv.itemconfigure(txt, text="OUT %s" % canvasID)
相关文章:
- 来自文本输入null的html javascript变量
- 将文本框中的值用于按钮窗体操作上的变量
- 操作javascript变量[HTML]以只显示文本
- 使用JSON文件中的变量(字符串)填充文本区域
- 仅当变量有值时才显示D3文本标签
- 如何在外部文档中使用javascript将文本区域的内容保存为变量
- 如何在Jquery函数中为自动完成文本区域指定一个变量作为Id
- 如何获取Session变量中的锚文本
- PHP/Ajax/jquery/JON-在Ajax Post之后将echo文本中的一部分作为变量返回
- 文本输入值中的JavaScript变量
- 键/值对的JavaScript数组使用文本变量名作为键
- 需要将长文本变量从JavaScript传递到PHP
- 如何使函数中的tkinter画布文本变量
- getXMLHTTP statusObject中的文本变量未找到状态=200
- 如何替换实时预览上的文本变量
- 文本变量为html,来自另一个站点的文件
- 如何将json文件转换为javascript中的文本变量
- 如何更改包含文本化值的文本变量的字体族
- 减去两个文本变量
- 使用jQuery从文本变量中给组合框赋值