私のカーソル(line.column)がどこにあるのかというアイデアがラベルに表示されていました。 .index(INSERT)でうまく動作しますが、テキストで右マウスボタンをバインドすると、現在のカーソル位置ではなく前のカーソル位置が返されます。 イベント後にコールバックが実行されたようですか?Python Tkinterバインディングを正しく使うには?
from tkinter import Tk, Text, Frame, Label, StringVar, constants, END, INSERT
EXPL_TEXT = "I know that dress is karma. Perfume regret\nYou got me thinking bout"
class App(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.pack()
self.var = StringVar()
self.init_widgets()
def init_widgets(self):
self.text = Text(self)
self.text.bind('<Button-1>',self.callback_index)
self.text.pack()
self.text.insert(END,EXPL_TEXT)
self.label = Label(self, textvariable=self.var)
self.label.pack()
def callback_index(self,event):
x = self.text.index(INSERT)
self.var.set(x)
if __name__ == '__main__':
root = Tk()
app = App(root)
root.mainloop()
シエラありがとうございましたあなたは絶対的に正しいです –
それはいくつかのイベントで発生します。リストボックスでも目立ちます。 'after()'で回避するだけです。他の解決策もあるかもしれませんが、これは私のために働いています。 –