Eingaben erkennen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Freitag 19. März 2010, 14:49

Hallo

Umfeld: Ubuntu/Gnome/gtk/Xserver

Ist es möglich zu erkennen ob man in ein Entry / TextView oder ein anderes Widget geklickt hat in das man text eingeben kann und das global in jedem Programm.

Ich will so etwas wie Windows für Touchscreens hat programmieren:
Wenn man dort in ein Widget klick (egal in welchem Programm) öffnet sich die Virtuelle Tastatur, ich finde das recht praktisch, weil man nicht immer die Virtuelle Tastatur ein und ausblenden muss.

Könnte ja irgend wie mit dem Xserver (xlib) gehen.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Freitag 19. März 2010, 15:10

Andyh hat geschrieben:Ist es möglich zu erkennen ob man in ein Entry / TextView oder ein anderes Widget geklickt hat in das man text eingeben kann und das global in jedem Programm.
Sicher, dazu gibt es das Signal "button-release-event", das bei jedem Widget ausgelöst wird.
http://library.gnome.org/devel/pygtk/st ... ease-event
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Freitag 19. März 2010, 15:22

hallo

Du hast mich falsch verstanden.

Beispiel:
-ich habe einen Touchscreen
-öffne den Firefox
-klicke mit meinem Finger/Stift in die Adressleiste
-jetzt öffnen sich die Virtuelle Tastatur

Wenn ich selber ein Programm schreibe kann ich die Widgets ja mit Events belegen, aber nicht bei Programmen wie Gedit, Firefox, usw...

gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Freitag 19. März 2010, 22:30

Hallo

Ich habe was gefunden.
Es müsste das Event FocusIn in der Xlib sein, nur bekomme ich es nicht.

Code: Alles auswählen

import Xlib
import Xlib.X as X
import Xlib.display as display

dsp = display.Display()
screen = dsp.screen()
root = screen.root
root.change_attributes(event_mask = (X.FocusChangeMask))

dsp.flush()
while 1:
    e = root.display.next_event()
    print e
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Antworten