0

ユーザーがオブジェクトをポイントすると、まだ実装していない特定の情報を含むテキスト ボックスが表示され、マウスを離すと消えるシステムを実装しようとしています。< Enter > コマンドと < Leave > コマンドをバインドしてそれを実行しようとしていますが、次のコードを実行しても何も起こりませんが、ターミナルで destroy には 2 つの引数が必要であると表示されているため、関数を呼び出していることがわかります。 .

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"
    currentmouseoverevent = event
    c.create_rectangle(bbox=(event.x,event.y, (event.x + 5), (event.y +len(mouseover)*5)),outline="white", fill=bkgnclr, width= len(mouseover))
    c.create_text(position=(event.x,event.y),text=mouseover, fill="white", currentmouseoverevent=event)

def closemouseover(x):
    c.destroy(currentmouseoverevent)

c.bind("<Enter>", mouseovertext)
c.bind("<Leave>", closemouseover)

destroy はどのような引数を取り、なぜ四角形が作成されないのですか?

4

2 に答える 2

1

tkinter の境界ボックス (bbox) は、四角形の境界を格納する 4 タプルです。2タプルであるマウスの位置のみを渡しています。

また、表示するコードで使用する前に変数「currentmouseoverevent」に実際に割り当てることはないため、closemouseover 関数は失敗します。

于 2013-10-22T18:51:45.390 に答える