Tastenabfrage

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
Morlon
User
Beiträge: 11
Registriert: Samstag 26. Dezember 2015, 18:18

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
BlackJack

@Morlon: Unter Linux/Unix kannst Du dafür das `curses`-Modul verwenden.
Morlon
User
Beiträge: 11
Registriert: Samstag 26. Dezember 2015, 18:18

Ich hab Windows...^^
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

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, 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.
Zuletzt geändert von pixewakb am Samstag 26. Dezember 2015, 19:24, insgesamt 1-mal geändert.
Morlon
User
Beiträge: 11
Registriert: Samstag 26. Dezember 2015, 18:18

Hast du da nen link dazu?
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

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.
Zuletzt geändert von pixewakb am Samstag 26. Dezember 2015, 19:37, insgesamt 1-mal geändert.
Morlon
User
Beiträge: 11
Registriert: Samstag 26. Dezember 2015, 18:18

Danke das hilft mir sehr=)
Kann man da eigentlich auch die z Achse einstellen?
Weil will ja auch vorder hintergrund usw haben=)
Morlon
User
Beiträge: 11
Registriert: Samstag 26. Dezember 2015, 18:18

irgendwie geht dein code doch ned, weild ie klasse tk nicht kennt...
BlackJack

@Morlon: Eine Klasse `tk` gibt es auch nicht und wird in dem Quelltext auch gar nicht verwendet. `tk` != `Tk`.
Morlon
User
Beiträge: 11
Registriert: Samstag 26. Dezember 2015, 18:18

Danke=)
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Antworten