擅长:python、mysql、java
<p>更正后的代码如下。在</p>
<p>结果我打错电话给bbox了。与其将坐标作为元组传递,不如将它们作为create_rectangle的前四个数组传递。c、 destroy只用于canvas、entry或textbox之类的对象,而我使用c.delete删除项目,并使用c.create_rectangle和c.create_text返回的事件号。在</p>
<pre><code>from tkinter import *
xhig, yhig = 425,325
bkgnclr = '#070707'
currentmouseoverevent = ['','']
c = Canvas(master, width=xhig*2, height=yhig*2, bg=bkgnclr, cursor = 'crosshair',)
def mouseovertext(event):
mouseover = "Jack"
if currentmouseoverevent[0] != '':
closemouseover()
currentmouseoverevent[0]=''
return
currentmouseoverevent[0] = c.create_rectangle(event.x,event.y, (event.x + 5), (event.y +len(mouseover)*5),outline="white", fill=bkgnclr, width= len(mouseover))
currentmouseoverevent[1] = c.create_text(event.x,event.y,text=mouseover, fill="white", currentmouseoverevent=event,anchor=NW)
def closemouseover(x):
c.delete(currentmouseoverevent[0])
c.delete(currentmouseoverevent[1])
c.bind("<Button-3", mouseovertext)
</code></pre>