Seite 1 von 1
Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 18:42
von Morlon
Hi,
ich wollte fragen wie ich die Tasten abfragen kann.
Ich hab nen Chrakter der sich mit Pfeiltasten bewegen soll.
Will das ganze aber ohne Pygame machen.
MfG,
morlon
Re: Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 18:52
von BlackJack
@Morlon: Unter Linux/Unix kannst Du dafür das `curses`-Modul verwenden.
Re: Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 19:01
von Morlon
Ich hab Windows...^^
Re: Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 19:15
von pixewakb
Kein GUI? Falls nein, Google mal nach pyHook. M. E. bist du damit schnell im Bereich von Keyloggern, jedenfalls verlaufen die Diskussionen dann in diesem Forum dann meist in diese Richtung.
PS: Ich habe mal - ich erinnere mich grob - in der Einführung von Michael Weigend eine Raumsimulation mittels tkinter gesehen, wo ein Raumschiff mittels Pfeiltasten bewegt wurde. Könnte für dich von Interesse sein.
PPS: Deinen anderen Beiträgen folgend würde ich denken, dass Du Tkinter einsetzt

, d. h. Weigend wäre für dich von Interesse.
PPPS: Die Quellcodes von Weigend waren auf einer CD dabei. Ich könnte dir das Programm wahrscheinlich raussuchen und schicken. Nur so am Rande. Wenn du es nicht brauchst: Du kannst m. E. bei Tkinter die Maus- und Tasten-Events abfragen und nutzen. Habe ich wenn, dann nur mal zum Spaß gemacht, d. h. keine Erfahrung.
Re: Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 19:23
von Morlon
Hast du da nen link dazu?
Re: Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 19:34
von pixewakb
Sorry, das wird dauern. Ich stelle gerade fest, dass ich Weigend griffbereit habe, aber die CD nicht. Ich habe die Auflage 4, 2010 und zwar findet sich das Beispiel dort in Kapitel "18.3 Beispiel: Tastaturereignisse verarbeiten".
Code: Alles auswählen
from tkinter import *
class Spielflaeche:
def __init__(self):
self.fenster = Tk()
self.canvas = Canvas(self, fenster, width="10c", height="5c")
self.canvas.pack()
[...]
self.fenster.bind('<KeyPress-Down>', self.runter)
self.fenster.bind('<KeyPress-Up>', self.rauf)
self.fenster.bind('<KeyPress-Left>', self.links)
self.fenster.bind('<KeyPress-Right>', self.rechts)
self.fenster.mainloop()
def rauf(self, event):
self.canvas.move(self.gemini7, 0, -3)
def runter(self, event):
self.canvas.move(self.gemini7, 0, +3)
def links(self, event):
self.canvas.move(self.gemini7, -3, 0)
def rechts(self, event):
self.canvas.move(self.gemini7, 3, 0)
s = Spielflaeche()
Ich habe zwischendrin etwas Code entfernt ([...]) und alles abgetippt, d. h. ich hoffe mal, dass da keine Fehler enthalten sind. Verstehst Du das Konzept? self.gemin7 hat er als Instanzattribut definiert und zwar wie folgt:
Code: Alles auswählen
self.gemini7 = self.canvas.create_image(50, 50, image=g7)
g7 wiederum ist eine Variable, die ein PhotoImage enthält.
Re: Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 19:36
von Morlon
Danke das hilft mir sehr=)
Kann man da eigentlich auch die z Achse einstellen?
Weil will ja auch vorder hintergrund usw haben=)
Re: Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 20:34
von Morlon
irgendwie geht dein code doch ned, weild ie klasse tk nicht kennt...
Re: Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 20:57
von BlackJack
@Morlon: Eine Klasse `tk` gibt es auch nicht und wird in dem Quelltext auch gar nicht verwendet. `tk` != `Tk`.
Re: Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 21:05
von Morlon
Danke=)
Re: Tastenabfrage
Verfasst: Samstag 26. Dezember 2015, 21:37
von noisefloor
Hallo,
@Morlon: also ohne Pygame, aber mit TKinter? Das hättest du im 1. Post ruhig erwähnen können...
Wenn du's im Terminal brauchst liefert eine Suche nach `python read keystroke windows` brauchbare Treffer.
Gruß, noisefloor