Toutchscreen - Anklicken und nicht drauf hängen bleiben

  • Hallo,

    ich habe mir ein kleines Programm zur Steuerung in Python bzw. zur Anzeige auf dem 7" DToutchscreen in Tkinter geschrieben.

    Alles klappt bis auf die Betätigung der Buttons.

    Ich habe den Mauspfeil zwar ausgeschaltet, dennoch bleibt die Funktion gleich.

    D.h. wenn ich mit dem Finger einen Button anklicke, muss ich danach eine frei Fläche anklicken um die Funktion aus zu führen.

    Ich vermute es liegt daran dass der Screen denkt, ich habe angeklickt (und die Maus drauf gelassen).

    Kann man das ändern?

    DT

  • Toutchscreen - Anklicken und nicht drauf hängen bleiben? Schau mal ob du hier fündig wirst!

  • Hallo,

    ein paar spezifische Infos wären schon gut, dann könnte ich ggf. probieren das Problem nachzustellen. Du könntest und z.B. verraten welches System Du benutzt, was ein DToutchscreen ist (Also das D sagt mir gar nix). Ist das nur bei Deinem Programm so oder hängt das gar nicht mit dem Programm zusammen?

    Ein gut gezielter Doppelklick funktioniert wirklich nicht? Bedeutet das Du klickst 1x auf einen Button 1x ganz wo anders hin und danach wieder 1x auf den Button und dann klappt es erst?

    Ich habe auch ein 7" Display mit Touchscreen (Resistiv) aber das was Du beschreibst kann ich nicht nachvollziehen...

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Hi,

    das D war ein Tippfehler - sorry für die Verwirrung 8)

    Ich habe jetzt noch ein bisschen rumgebastelt und die Buttons in dieser Art definiert:

    Code
    b1 = tk.Button(root, text="Heizung", bg="green", font = "Helvetica 20 bold italic", command=callback_Heizung)
            b1.place(x=20, y=50, width=200, height=150)
            heizung_ein = 0

    Nun ist die Funktion so:

    Ich gehe mit dem Finger drauf, der Button wird grau und die Aktion ausgeführt.

    Leider bleibt der Button nun grau, da der unsichtbare "Mauspfeil" ja quasi noch drauf ist.

    Da der Button aber nun aber rot ist, sehe ich das erst wenn ich eine Fläche außerhalb des Buttons anklicke.

    Wie bekomme ich das hin dass der unsichtbare Mauspfeil von dem Button geht?

  • Kurze Anmerkung, die nicht unbedingt zur Lösungs des Problems beiträgt. Das Problem mit den Touchscreens ist, dass die meisten Toolkits für Desktop UIs gar nicht oder nur sehr wenig auf Nutzung mit einem Touchscreen optimiert sind. Ganz im Gegensatz stehen Toolkits, die ursprünglich für Mobilgeräte entwickelt wurden. Das Problem ist die Anzahl der verschiedenen Status (ja, das ist der Plural!), die das Eingabegerät hat. Klassisch gibt es da hover und mousedown. Bei deinem Touchscreen hast du ja meistens keine Maus, d.h. hover fällt weg und wenn du den Mauszeiger jetzt aber nur ausblendest, ist er ja bis zum nächsten Klick immer noch auf dem Element und erzeugt den Status hover.

    Abhilfe könnte hier unter anderem folgendes schaffen:

    • Verwendung von z.B. kivy, welches auch für Touchscreens "geeignet" ist, oder ein Web-based UI, hier kommt es aber auch auf die Engine und dein CSS an, ob du das unerwünschte Verhalten los wirst.
    • Einsatz eines "Hacks", z.B. dass der Mauszeiger nach jedem Klick programmatisch an einen "unproblematischen" Punkt bewegt wird (springt), wo er dann "verweilt".
  • Renão ich dachte an die tatsächliche Position des Mauszeigers. Und klar kann man den kontrollieren, wenn man die Software selbst schreibt :conf:

    Update: um das hier mal voranzubringen ;)

    Suche dir eine beliebige Bibliothek aus, welche die Manipulation der Maus unter Linux ermöglicht. Gibt's ein paar.

    Dann machst du dich zu Funktions-Dekoratoren ("python decorators") schlau, und wrappst alle callback Funktionen für alle Buttons mit einer Hilfsfunktion, die dir den Mauszeiger z. B. nach (0, 0) bewegt.

    Sollte alles kein Hexenwerk sein.

  • Ich verwende zum automatisieren pyautogui. Damit kann man Tasten und Mausfunktionen simulieren. Hier wird z.b. ein Tastendruck simuliert. Ähnlich einfach ist es die Mausbewegungen zu simulieren.

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!