Ich habe eine Lösung gefunden, um das Popup-Menü zu beheben, wird das Problem auf Windows nicht verbergen.
Fügen Sie einfach folgenden Code (mein Code in C, aber Sie können es zu python ändern oder was auch immer), bevor das Menü Aufspringen:
GtkWidget *hidden_window;
hidden_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_resizable (GTK_WINDOW (hidden_window), FALSE);
gtk_window_set_decorated (GTK_WINDOW (hidden_window), FALSE);
gtk_window_set_skip_taskbar_hint (GTK_WINDOW (hidden_window), TRUE);
gtk_window_set_skip_pager_hint (GTK_WINDOW (hidden_window), TRUE);
gtk_widget_set_size_request (hidden_window, 0, 0);
gtk_window_set_transient_for (GTK_WINDOW (hidden_window), GTK_WINDOW (widget)); //widget is your main window, this is to hide dummy window from taskbar
gtk_window_set_position (GTK_WINDOW (hidden_window), GTK_WIN_POS_MOUSE);
gtk_widget_set_events (hidden_window, GDK_FOCUS_CHANGE_MASK);
g_signal_connect (G_OBJECT (hidden_window),
"focus-out-event",
G_CALLBACK (on_hidden_window_focus_out),
NULL);
gtk_widget_show_all (hidden_window);
gtk_widget_grab_focus (hidden_window);
fügen ebenfalls diese Funktion:
static void on_hidden_window_focus_out(GtkWidget *widget,
GdkEventFocus *event,
gpointer data)
{
gtk_widget_destroy (widget);
}
Die Idee ist, ein 1x1 Top-Level-Fenster an der Mausposition zu erstellen und den Fokus zu greifen, und fügen Sie zerstören Funktion hinzu, wenn der Fokus aus.
toll, danke! Dieses andere Problem ist nicht so eine große Sache, ich denke, ich kann damit leben. – wodemoneke