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

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

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
viewtopic.php?t=41258