Seite 1 von 1

win32gui.SetForegroundWindow Äqivalent für Unix ?

Verfasst: Freitag 24. April 2009, 07:51
von snakeseven
Hi,
gibt es eine Funktion unter Unix, mit welcher ich meiner Applikation den Focus geben kann ? (auf Windows mit 'win32gui.SetForegroundWindow')

Gruss, Seven

Verfasst: Freitag 24. April 2009, 08:05
von Barabbas
naja, das hängt doch wahrscheinlich vom Toolkit ab? Bei GTK zum Beispiel nutzt man dazu window.present()

Schöne Grüße,

Daniel

Verfasst: Freitag 24. April 2009, 09:23
von Leonidas
Barabbas hat geschrieben:naja, das hängt doch wahrscheinlich vom Toolkit ab? Bei GTK zum Beispiel nutzt man dazu window.present()
Das Toolkit wrappt vermutlich sowieso nur die vorgesehenen Funktionen der NETWM-Spezifikation. Unter Unices kannst du dir aber nicht sicher sein ob das Fenster tatsächlich auch in den Fokus kommt - schließlich steht es dem WM frei, die Spezifikation zu ignorieren.

Re: win32gui.SetForegroundWindow Äqivalent für Unix ?

Verfasst: Freitag 24. April 2009, 09:41
von gerold
snakeseven hat geschrieben:Applikation den Focus geben
Hallo Seven!

Die "xlib" kennt die Funktion "XRaiseWindow". Ich glaube, damit könnte so etwas möglich sein. Man müsste es mal ausprobieren.

Hier die Hilfe zu XRaiseWindow: http://tronche.com/gui/x/xlib/window/XRaiseWindow.html

In diesem Beispiel http://www.python-forum.de/post-131557.html#131557 siehst du, wie man eine Referenz auf das "Display"-Objekt bekommt. Leider weiß ich nicht, wie man zu einer Referenz des "Window"-Objektes kommt, welches man anzeigen möchte.

Ziemlich wage, die Sache...

lg
Gerold
:-)

Verfasst: Freitag 24. April 2009, 12:09
von snakeseven
Sorry, unter wxPython meine ich. Aber ich werd mich mal mit XRaiseWindow beschäftigen.

Grüße, Seven

Verfasst: Freitag 24. April 2009, 13:43
von gerold
snakeseven hat geschrieben:unter wxPython meine ich
Hallo Seven!

du kannst das Frame "modal" machen. Dann kommt kein anderes Fenster drüber. Habe jetzt keine Zeit mehr. Suche dir selber aus dem Code raus, was du brauchen kannst. :-)

Code: Alles auswählen

    def show_menu_frame(self):
        """
        Zeigt das Menüfenster an.
        """
        
        if DEBUG:
            log.debug("show_menu_frame (start)")
            
        # Menüfenster anzeigen
        menuframe = MenuFrame(app = self)
        self.menuframe = menuframe
        if settings.get("global_full_screen_windows"):
            menuframe.ShowFullScreen(
                True, style = wx.FULLSCREEN_ALL ^ (
                    wx.FULLSCREEN_NOSTATUSBAR | wx.FULLSCREEN_NOMENUBAR
                )
            )
        else:
            menuframe.Show()
            if settings.get("global_maximize_windows"):
                menuframe.Maximize()
        menuframe.MakeModal()
lg
Gerold
:-)