新しいノードを作成するために、TreeViewの空の領域でダブルクリックイベントをキャッチしようとしています。残念ながら標準的な方法は機能しません。私は、T.V.がホストされているTreeViewとScrolledWindowの両方にButtonPressEventを添付しようとしました。私は自分の職務にコールバックを得ることはありません。Gtk.TreeViewでクリックを捕まえるには?
どうすればこの問題を解決できますか?
新しいノードを作成するために、TreeViewの空の領域でダブルクリックイベントをキャッチしようとしています。残念ながら標準的な方法は機能しません。私は、T.V.がホストされているTreeViewとScrolledWindowの両方にButtonPressEventを添付しようとしました。私は自分の職務にコールバックを得ることはありません。Gtk.TreeViewでクリックを捕まえるには?
どうすればこの問題を解決できますか?
TreeView.ButtonPressEventを処理するには、ハンドラでGLib.ConnectBeforeAttributeを使用する必要があります。そうしないと、ウィジェットは内部的にイベントを処理し、ハンドラは呼び出されません。
例:
[GLib.ConnectBefore]
void OnTreeViewButtonPressEvent(object sender, ButtonPressEventArgs e)
{
if (e.Type == Gdk.EventType.TwoButtonPress)
{
// double click
}
}
私は、ツリービューには独自のウィンドウがあると思います。
(tvichildren、treeview-> Getsafehwnd()、tvi_root)ウィンドウハンドルを取得し、その後のSendMessage
上記送信メッセージは、あなたの理解のためのものです。
http://old.nabble.com/CellRenderer-editable-on-double-click-td24975510.html
self.treeview.connect("button-press-event",self.cell_clicked)
def cell_clicked(self, widget, event):
if event.button == 1 and event.type == gtk.gdk.BUTTON_PRESS:
print "Double clicked on cell"
あなたが話しているが、Gtkのように見えるしないツールキットわからない;) – viraptor
ありません、それはGTK、そのWindowsプログラミングではありません。私はGTKにも同様のことがあると信じています。 ツールキットは、基本のラッパーです。私は信じている。 –