Question

Après stackoverflow a répondu à ma question précédente ici au sujet de ma Wiimote gauche / droite problème de clic, non seulement je peux déplacer le curseur de la souris, je peux maintenant gauche / clic droit sur les choses. J'ai maintenant une question.

Que dois-je utiliser en python pour obtenir le titre de la fenêtre active? Après googler 'X11 Python Window Title', 'Linux Python Titre Window' et des choses semblables, Tout ce que j'ai trouvé est win32 et tkinker (encore?), Ce qui est pas ce que j'ai besoin.

Si vous pouviez aider, ce serait génial!

Était-ce utile?

La solution

EDIT

meilleure façon:

import gtk
import wnck
import glib

class WindowTitle(object):
    def __init__(self):
        self.title = None
        glib.timeout_add(100, self.get_title)

    def get_title(self):
        try:
            title = wnck.screen_get_default().get_active_window().get_name()
            if self.title != title:
                self.title  = title
                print title
        except AttributeError:
            pass
        return True

WindowTitle()
gtk.main()

Une manière alternative:

from subprocess import PIPE, Popen
import time

title = ''
root_check = ''

while True:
    time.sleep(0.6)
    root = Popen(['xprop', '-root'],  stdout=PIPE)

    if root.stdout != root_check:
        root_check = root.stdout

        for i in root.stdout:
            if '_NET_ACTIVE_WINDOW(WINDOW):' in i:
                id_ = i.split()[4]
                id_w = Popen(['xprop', '-id', id_], stdout=PIPE)

        for j in id_w.stdout:
            if 'WM_ICON_NAME(STRING)' in j:
                if title != j.split()[2]:
                    title = j.split()[2]
                    print "current window title: %s" % title

Autres conseils

La solution de xprop-de killown peut être compacté en une seule instruction (si longue):

import subprocess
def GetActiveWindowTitle():
    return subprocess.Popen(["xprop", "-id", subprocess.Popen(["xprop", "-root", "_NET_ACTIVE_WINDOW"], stdout=subprocess.PIPE).communicate()[0].strip().split()[-1], "WM_NAME"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0].strip().split('"', 1)[-1][:-1]

Le problème est de savoir quelle fenêtre est active ou ce que le titre est? Obtenir le titre d'une fenêtre est facile:

MainWindow.title()

, où MainWindow est le nom de la fenêtre. Aucune idée de fenêtre active cependant. Jamais eu plusieurs fenêtres.

Je pense que python-wnck pourrait être utile si vous voulez gérer les espaces de travail de Windows et d'autres. Je ne peux pas trouver les documents immédiatement Python, mais selon les documents de la bibliothèque libwnck C qui l'enveloppe, il a un wnck_screen_get_active_window () méthode .

Ma solution:

import wnck
disp=Display()
default_screen=wnck.screen_get_default()
default_screen.force_update()

active_window=disp.create_resource_object('window', default_screen.get_active_window().get_xid())
title=active_window.get_wm_name()

Je remarque que wnck nécessite boucle d'événements GTK mettre à jour la fenêtre active. Il n'y a pas de problème avec Xlib:

import Xlib
import Xlib.display
disp = Xlib.display.Display()
window = disp.get_input_focus().focus

# Get active window class and name
window.get_wm_class()
window.get_wm_name()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top