문제

TreeView의 빈 구역에서 더블 클릭 이벤트를 잡아 새 노드를 만들려고합니다. 불행히도 표준 방식은 작동하지 않습니다. 나는 Treview와 TV가 호스팅되는 스크롤 Window에 ButtonPressevent를 첨부하려고 시도했습니다. 내 기능에 대한 콜백이 없습니다.

이것을 어떻게 해결할 수 있습니까?

도움이 되었습니까?

해결책

핸들러의 glib.connectbeforeattribute를 사용하여 treeview.buttonpressevent를 처리해야합니다. 그렇지 않으면 위젯이 내부적으로 이벤트를 처리하고 핸들러가 호출되지 않습니다.

예시:

[GLib.ConnectBefore]
void OnTreeViewButtonPressEvent(object sender, ButtonPressEventArgs e)
{
    if (e.Type == Gdk.EventType.TwoButtonPress)
    {
        // double click
    }
}    

다른 팁

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"

TreeView에는 그 자체의 창이 있다고 생각합니다.

창 핸들을 얻은 다음 sendMessage (TreeView-> getSafehwnd (), TVI_ROOT, TVICHILDREN)

위의 보내기 메시지는 이해하기위한 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top