1

バックグラウンド

テキスト ウィジェットに表示される各項目は、タスクを表しています。Text ウィジェットはアイテムごとに異なる色を使用できるため、ListBox ではなく Text ウィジェットを使用しています。各タスクの色はそのステータスです。タスクごとに個別の LC コマンドを設定することはできますか?

右側にタスクがある (おそらくスクロール可能) 分割ペイン アプリケーションがあり、タスクをクリックして、左側のペインで精査するために開きたいと考えています。

主な質問

Python Text Tkinter ウィジェットで個別の行を左クリックすると、個別のイベントを何らかの方法でアクティブにすることはできますか?

4

2 に答える 2

2

にバインディングを設定するだけ<1>です。indexウィジェットのメソッドとイベントの x/y 座標を使用して、クリックされた行番号を簡単に取得できます。

簡単な例を次に示します。

import Tkinter as tk

class ExampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.status = tk.Label(self, anchor="w")
        self.status.pack(side="bottom", fill="x")
        self.text = tk.Text(self, wrap="word", width=40, height=8)
        self.text.pack(fill="both", expand=True)
        self.text.bind("<1>", self.on_text_button)
        for n in range(1,20):
            self.text.insert("end", "this is line %s\n" % n)


    def on_text_button(self, event):
        index = self.text.index("@%s,%s" % (event.x, event.y))
        line, char = index.split(".")
        self.status.configure(text="you clicked line %s" % line)

if __name__ == "__main__":
    app = ExampleApp()
    app.mainloop()
于 2012-05-15T23:19:47.997 に答える
1

このようなことができると思います。tkHyperlinkManger がそれを行います ( http://effbot.org/zone/tkinter-text-hyperlink.htm )

すでに線の色を変えているので、 を使用していると思いますtag_config。次にtag_bind、コールバックをテキストの領域にバインドするだけです。

于 2012-05-15T19:36:05.357 に答える