私はツールチップの割り当てと管理に以下のスクリプトを使用しています。それは動作しますが、小さな不利益を伴います。私がツールチップを割り当てるボタンウィジェットは、ツールチップスクリプトが500ms後に実行されない限り、クリックダウンアニメーションをもはや持っていない。何か案は?可能であれば、いつでもネイティブボタンの動作を維持し、ツールチップを表示する前に500ms待機する必要があります。ボタンのアニメーションをオーバーライドしないでこのpython tkinterツールチップを実装するにはどうすればいいですか?
class ToolTip(object):
def __init__(self, widget):
self.widget = widget
self.tipwindow = None
self.id = None
self.x = self.y = 0
def showtip(self, text):
self.text = text
if self.tipwindow or not self.text: return
x,y,cx,cy = self.widget.bbox("insert")
x = x + self.widget.winfo_rootx() +15
y = y + cy + self.widget.winfo_rooty() +65
self.tipwindow = tw = Toplevel(self.widget)
tw.wm_overrideredirect(1)
tw.wm_geometry("+%d+%d"%(x,y))
label = Label(tw, text=self.text, justify=LEFT,background="#ffffe0", relief=SOLID, borderwidth=1,font=("tahoma", "8", "normal"))
label.pack(ipadx=1)
def hidetip(self):
tw = self.tipwindow
self.tipwindow = None
if tw: tw.destroy()
def createToolTip(self,widget,text):
toolTip = self.ToolTip(widget)
def enter(event): root.after(500,show(event))
def show(event): toolTip.showtip(text)
def leave(event): toolTip.hidetip()
widget.bind('<Enter>', enter)
widget.bind('<Leave>', leave)
私は、もう一度ブライアンを参照してください。今私は別の問題を抱えています.500ミリ秒以内にボタンを押して終了すると、ツールチップが表示されたままになります。どのようにそれを修正するための任意のアイデア? – Symon
@サイモン:コメントは答えが正しい場所ではありません。短いバージョン:カーソルが500ms間移動した場合、ツールチップを表示しないでください。または、 ''の処理中に、保留中の「アフター」ジョブをキャンセルします。 –
ヒントをありがとう、私はあなたの2番目の提案を行った。 – Symon