Seite 1 von 1

Tastatureingaben anfragen

Verfasst: Dienstag 24. April 2018, 22:13
von markjohannes
Liebe Community
Meine Frage ist, wie ich in Python generell die Tastatureingaben abfragen kann. Es sollte ohne gui und mit gui wie z.b. pygame oder tkinter funktionieren. Wenn es dafür keine Möglichkeit gibt, wüsste ich gern weine Möglichkeit für tkinter.

Mit gespannten Grüßen
Johannes Schaffer

Re: Tastatureingaben anfragen

Verfasst: Dienstag 24. April 2018, 22:15
von __deets__
Kannst du mal etwas weiter ausholen was du eigentlich erreichen willst, und unter welchem OS. Dann kann man dazu auch was aussagekräftiges sagen.

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 07:15
von markjohannes
Das os soll Linux sein.
Ich möchte vorrangig in guis wie tkinter und pygame die Tastatur abfragen und so bestimmte Buttons und Befehle bestimmten Tasten zuweisen.

Viele Grüße
Johannes Schaffer

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 07:49
von Sirius3
@markjohannes: dann nimm doch die Möglichkeiten, die tkinter, bzw. pygame Dir dafür bereitstellen. Generell gibt's da nichts, nur individuell für jedes Rahmenwerk.

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:12
von markjohannes
Okay und wie heißt die Funktion für tkinter.

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:13
von markjohannes
Und wie kann ich den Titel nachträglich ändern?

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:18
von __deets__
Hast du mal geschaut? Was in der tkinter Dokumentation ist dir unklar?

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:26
von markjohannes
Ich bin erst 15 und kann noch nicht so gut Englisch.
Wenn du mir einfach die Funktion nennen könntest wäre das nett:)
LG Johannes

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:29
von __deets__
Das ist nicht nur einfach eine Funktion. Und um das Englisch kommst du nicht herum. Das ist im programmieren überall. Mit Google translate wird das schon gehen.

http://effbot.org/tkinterbook/tkinter-e ... ndings.htm

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:31
von markjohannes
Danke wo kann ich denn die offizielle Dokumentation von tkinter finden? Oder was meinst du mit tkinter Dokumentation?
LG Johannes

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:34
von __deets__
Das was ich dir geschickt habe ist vom Autor von tkinter. Ansonsten natürlich auf Python.org.

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:34
von markjohannes
Und ich habe mir deinen Link jetzt durchgelesen und Frage mich, ob ich auch tkinter sagen, dass er nur auf eine bestimmte taste hört, so wie in pygame mit z.b. K_ a .

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:36
von __deets__
Ja. Steht da drin.

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:39
von __deets__
Du bekommst genauso wie bei pygame ein Event und musst das abfragen. Das kannst aber auch einen konkreten Buchstaben angeben. Ist alles in dem Dokument erklärt.

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 09:40
von markjohannes
Okay. Vielen Dank
Und einen Schönen Tag noch.
Kann man die treads hier irgendwie auf gelöst setzen?
LG Johannes

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 12:00
von wuf
Hi markjohannes

Ich nehme an die vergangenen Antworten haben noch nicht ganz zum Ziel geführt? Hier etwas für Tkinter:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

try:
    #~~ For Python 2.x
    import Tkinter as tk
except ImportError:
    #~~ For Python 3.x
    import tkinter as tk

def taste_gedrueckt(event):
    taste_char = event.char
    taste_code = event.keycode
    taste_symbol = event.keysym
    taste_num = event.keysym_num
    print("\nFolgende Taste wurde gedrückt:"\
        + "\nChar:{}\nCode:{}\nSymbol:{}\nNummer:{}".format(
        taste_char, taste_code, taste_symbol, taste_num))
    
    app_win.title("Tasten Symbol: {}".format(taste_symbol))
    
app_win = tk.Tk()
app_win.title("Bitte Taste drücken")
app_win.geometry("300x100")
app_win.bind('<KeyPress>', taste_gedrueckt)
app_win.mainloop()
Gruss wuf :wink:

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 12:41
von markjohannes
Wow!
Das hat perfekt funktioniert. Genau so etwas habe ich gesucht, auch wenn ich mich durch die Dokumentation gearbeitet habe; aber diese habe ich nicht so gut verstanden:(
PS: Kennst du eine Funktion mit der man einen Button klicken kann? Ich kenne invoke() aber die ist nach meiner subjektiven Meinung ziemlich langsam.

Mit freundlichen Grüßen
Johannes Schaffer

Re: Tastatureingaben anfragen

Verfasst: Mittwoch 25. April 2018, 20:17
von wuf
Hi markjohannes

Hier noch eine Erweiterung des obigen Skript mit einem Button und dessen Funktion .invoke():

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

try:
    #~~ For Python 2.x
    import Tkinter as tk
except ImportError:
    #~~ For Python 3.x
    import tkinter as tk

def button_gedrueckt():
    # Diese Funktion wird durch einen Mausklick auf den 'Button-A', aber auch
    # durch drücken der Tastaturtaste 'A' aufgerufen.
    # Die Buttonfunktion .invoke() wird benützt um die 'command-Funktion des
    # Buttons aufzurufen bewirkt aber keine animierte Bewegung des Buttons!
    print("Button-A wurde gedruekt")
    
def tastatur_taste_gedrueckt(event):
    taste_char = event.char
    taste_code = event.keycode
    taste_symbol = event.keysym
    taste_num = event.keysym_num
    print("\nFolgende Taste wurde gedrückt:"\
        + "\nChar:{}\nCode:{}\nSymbol:{}\nNummer:{}".format(
        taste_char, taste_code, taste_symbol, taste_num))
    
    app_win.title("Tasten Symbol: {}".format(taste_symbol))
    
    if taste_char == "A":
        print('Hi')
        app_win.button_a.invoke()
        
app_win = tk.Tk()
app_win.title("Bitte Taste drücken")
app_win.geometry("300x100")
app_win.bind('<KeyPress>', tastatur_taste_gedrueckt)
app_win.button_a = tk.Button(app_win, text='Button-A', command=button_gedrueckt)
app_win.button_a.pack(expand=True)

app_win.mainloop()
Gruss wuf :wink:

Re: Tastatureingaben anfragen

Verfasst: Donnerstag 26. April 2018, 11:07
von Kebap
__deets__ hat geschrieben:um das Englisch kommst du nicht herum. Das ist im programmieren überall. Mit Google translate wird das schon gehen.
Mit DeepL geht es besser :mrgreen: viewtopic.php?t=41258