ユーザーがアイコンをクリックすると、ウィンドウと同じワークスペースにいるときにウィンドウの表示が切り替わります。彼が別のワークスペースにいるとき、ウィンドウはそのワークスペースに移動します。
ここで、アプリケーションとユーザーが同じ画面上にあり、アプリが別のアプリによって完全にオーバーレイされている場合、最初にウィンドウを非表示にして次のトレイ アイコンをクリックしてもう一度表示するのではなく、ウィンドウを上に上げたいと考えています。 .
これまでの私のコード:
def inOverlayed(self):
windows = self.window.get_screen().get_toplevel_windows()
win = self.window.get_window()
x, y, w, h, b = win.get_geometry()
for i in windows:
if win != i:
x2, y2, w2, h2, b2 = i.get_geometry()
if x >= x2 and x + w <= x2 + w2:
if y >= y2 and y + h <= y2 + h2:
return True
return False
最大の問題は、ウィンドウの z レベルを決定する方法がないように思われますが、ウィンドウが別のウィンドウのすぐ内側にあるか、実際にオーバーレイされているかを区別できません。
だから私の質問は、どうすればWindowsのzレベルを見つけることができますか(ドキュメントはこれについて何も言っていません)、またはこの問題のより簡単な解決策はありますか