如何在GTK3+;中仅更改顶层窗口的形状;?

如何在GTK3+;中仅更改顶层窗口的形状;?,gtk,pygtk,gtk3,Gtk,Pygtk,Gtk3,我使用函数gtk\u widget\u shape\u combine\u region为GTK3+窗口设置形状。但是,此功能适用于顶级窗口和子窗口。我只想设置顶层窗口的形状,并在顶层窗口区域之外显示一些小部件。例如,我将顶层窗口的形状设置为圆形,并且我还希望在右上角显示一个按钮。我还尝试使用GtkOverlay小部件,将按钮放在它上面(右上角),并将覆盖小部件传递给gtk\u小部件\u形状\u组合区域函数,但它无法工作并打印一些错误消息:gtk\u小部件\u形状\u组合区域:断言gtk\u小部

我使用函数
gtk\u widget\u shape\u combine\u region
为GTK3+窗口设置形状。但是,此功能适用于顶级窗口和子窗口。我只想设置顶层窗口的形状,并在顶层窗口区域之外显示一些小部件。例如,我将顶层窗口的形状设置为圆形,并且我还希望在右上角显示一个按钮。我还尝试使用GtkOverlay小部件,将按钮放在它上面(右上角),并将覆盖小部件传递给
gtk\u小部件\u形状\u组合区域
函数,但它无法工作并打印一些错误消息:
gtk\u小部件\u形状\u组合区域:断言
gtk\u小部件\u获取窗口(小部件)'failed`。我可以使用其他容器小部件吗?有没有办法做到这一点?任何帮助都将不胜感激。

那么您将哪个小部件传递给shape\u combine\u region()?您不应该传递GtkOverlay,而是实际的覆盖小部件(在您的案例中可能是一个按钮)。如果我传递button对象,它会打印相同的错误消息。哦,我看到GtkButton也没有窗口:您可以尝试将GtkEventBox作为覆盖小部件,并将按钮放在eventbox中。