簡體   English   中英

PyGTK 中的持久化窗口

[英]Persistent Windows in PyGTK

有沒有辦法強制 gtk.Window 對象忽略窗口管理器的顯示/隱藏命令,例如“iconify”和“顯示桌面”?

我正在嘗試創建一個持久的窗口,粘在桌面上,當桌面暴露時,它不會與所有其他窗口一起消失。

編輯:我想我特別想知道的是是否可以使用 PyGTK 重現在應用程序(例如停靠欄、桌面小部件、系統托盤等)中發現的行為?

你已經倒退了; 不是窗口管理器通過向窗口發送命令來告訴窗口最小化。 窗口管理器擁有該窗口,如果它想停止映射一個窗口,它就會這樣做,而不需要請求該窗口的許可。

所以我認為答案是否定的。

窗口類型提示列表中,單擊顯示桌面按鈕時僅顯示兩個:

  • gtk.gdk.WINDOW_TYPE_HINT_DESKTOP
  • gtk.gdk.WINDOW_TYPE_HINT_DOCK

這兩者都會導致您的窗口失去裝飾(即沒有邊框或標題欄),因此移動/調整大小取決於您的應用程序。 DESKTOP 導致窗口總是在其他窗口之后。 DOCK 使其始終在前面。

選擇 SPLASHSCREEN 會為您提供一個未修飾的窗口,當您單擊“顯示桌面”時該窗口仍會隱藏。

如果您想要一個在用戶單擊“顯示桌面”時仍然顯示的無邊框、不動的窗口,請使用:

window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)

在調用 window.show() 之前。 窗口一旦顯示,就無法更改其類型。

嘗試在GtkWindow上設置GdkWindowTypeHint

gtk_window_set_type_hint(the_window, GDK_WINDOW_TYPE_HINT_UTILITY);

還有多種方法可以讓您的窗口不列在尋呼機或任務欄中,而是顯示在所有桌面上。 請記住,所有這些行為都取決於窗口管理器的支持。 除非您使用非常舊的東西,否則這應該不會造成問題。

沒有收到“這就是如何做到這一點”的答案,並且做了更多的研究,我可以說——據我所知——沒有簡單的方法可以用 PyGTK 實現這種功能。 最好的選擇是設置窗口管理器提示並將其留給 WM 來執行您想要的操作(希望如此)。

我認為gtk_window_set_type_hint(window, GDK_WINDOW_TYPE_HINT_SPLASHSCREEN)是你想要的。 它也是GDK_WINDOW_TYPE_HINT_DOCK ,但是窗口GDK_WINDOW_TYPE_HINT_DOCK處於最重要的位置,您無法將其發送回去。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM