0

Gedit プラグインのコードを少し書いています。私は Python を使用しており、インターフェイスは (明らかに) GTK です。

したがって、私が抱えている問題は非常に単純です。検索ボックス (gtk.Entry) があり、そのすぐ下に結果ボックス (gtk.TreeView) があります。検索ボックスに何かを入力した直後に、一連の結果が表示されます。ユーザーが上/下キーを押していずれかを選択し、Enter キーを押して選択し、完了できるようにしたいと考えています。つまり、Up/Down キーを押して TreeView に転送する方法が見つからないようです。現在、私はこのコードを持っています:

def __onSearchKeyPress(self, widget, event):
    """
    Forward up and down keys to the tree.
    """
    if event.keyval in [gtk.keysyms.Up, gtk.keysyms.Down]:
        print "pressed up or down"
        e = gtk.gdk.Event(gtk.gdk.KEY_PRESS)
        e.keyval = event.keyval
        e.window = self.browser.window
        e.send_event = True
        self.browser.emit("key-press-event", e)
        return True

正しい種類のイベントを受信して​​いることははっきりとわかりますが、送信しているイベントは TreeView によって無視されます。何か案は?

事前に感謝します。

4

2 に答える 2

2

質問に対する適切な回答ではありませんが (キーの押下を転送する方法がわかりません)、問題に対する別の解決策があります。

TreeView カーソル/選択を直接操作します。次に例を示します。

path, column = browser.get_cursor()
browser.set_cursor((path[0] + 1,)) # Down
于 2010-03-31T20:57:57.370 に答える
1

key-press-eventウィジェットが受信を許可されているイベントのリストにを含めましたか?あなたは電話することによってそれを行うことができます

browser.add_events(gtk.gdk.KEY_PRESS_MASK)
于 2010-03-29T15:24:54.977 に答える