2011-02-23 7 views

답변

8

은 GTK의 문서는 제안 :

GtkWidget *toplevel = gtk_widget_get_toplevel (widget); 
    if (gtk_widget_is_toplevel (toplevel)) 
    { 
     /* Perform action on toplevel. */ 
    } 

get_toplevel 따라서 is_toplevel 검사, 그것은 윈도우의 여부, 당신은 내부에있는 맨 위의 위젯을 반환합니다. 그래, 위의 코드는 "get_toplevel()"을 수행 한 다음 즉각적인 "is_toplevel()"(대부분 get_toplevel()을 다른 것으로 호출해야하기 때문에) 뭔가 잘못된 이름이 지정되었습니다.

2

gtk_widget_get_toplevel이 작동해야하지만, 아래 코드를 시도해 볼 수도 있습니다. 주어진 위젯에 대한 부모 gtk 윈도우를 얻어서 제목을 출력해야합니다. 이 도움이

GdkWindow *gtk_window = gtk_widget_get_parent_window(widget); 
GtkWindow *parent = NULL; 
gdk_window_get_user_data(gtk_window, (gpointer *)&parent); 
g_print("%s\n", gtk_window_get_title(parent)); 

희망, 당신은 toplevel = mywidget.get_toplevel() 같은 최상위 다음 gtk.MessageDialog()

+2

이 낮은 수준의 GDK의 gunge을 통해 불필요한 우회를 필요로 직접 toplevel 먹이를 얻을 수 pygtk에서 –

+0

"적절한 권장 방법이 효과적 일지 모르지만 식별 할 수없는 이유로 불필요하게 복잡한 대안을 시도 할 수도 있습니다."... 또는 그 중 하나가 있습니다. .? –

5

에 관하여 - 더 머물 GTK 레이어. 여기서 위젯을 구현해야하며 GTK 3에 문제가있을 수 있습니다.
관련 문제