Hallo,
ich versuche eine Funktion zu programmieren in der abgefragt wird, ob eine Maustaste konstant gedrückt wird. Während die Taste gedrückt wird soll dann etwas passieren (z.B. etwas gezeichnet werden).
Ich habe es über eine while Schleife versucht, aber da stürzt alles ab. Für irgendwelche Ideen wäre ich dankbar
Abfrage ob Mausbutton konstant gedrückt ist
Interessant wäre auch *womit*. Das ist hier ja das "Sammelbecken" für alle GUI-Toolkits, die kein eigenes Unterforum haben.
-
- User
- Beiträge: 7
- Registriert: Sonntag 20. Juli 2008, 11:42
Sorry, es geht um Pygame:
Code: Alles auswählen
while True:
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN:
paint()
def paint():
while MOUSEBUTTONDOWN == True:
mach irgendwas
-
- User
- Beiträge: 7
- Registriert: Sonntag 20. Juli 2008, 11:42
Ich hoffe dass das so okay ist:
Code: Alles auswählen
import pygame
from pygame.locals import *
from sys import exit
pygame.init()
screen = pygame.display.set_mode((640, 480), 0 ,32)
startpos = ()
endpos = ()
momentpos = ()
while True:
for event in pygame.event.get():
if event.type == QUIT:
exit()
if event.type == MOUSEBUTTONDOWN:
startpos = pygame.mouse.get_pos()
paint()
def paint():
endpos = startpos
momentpos = startpos
while MOUSEBUTTONDOWN == True:
endpos = pygame.mouse.get_pos()
if endpos != momentpos:
pygame.draw.rect(screen,(255,255,255), Rect(startpos, endpos))
momentpos = endpos
screen.fill((0,0,0))
pygame.display.update()
Ist nicht okay, gibt einen `IndentationError`:
Wenn man den behebt gibt es einen `NameError` weil Du `paint()` verwendest bevor es definiert ist.
Wenn man das behebt, dann tut das Programm im Grunde gar nichts weil die Bedingung der ``while``-Schleife in `paint()` *grundsätzlich* nicht erfüllt wird. Überleg Dir mal was Du da miteinander vergleichst und warum das nie gleich sein wird.
An dem Quelltext kann man aber auch nicht viel reparieren, weil das Konzept an sich fragwürdig ist. Du solltest Dir beim `MOUSEBUTTONDOWN`-Ereignis die Mausposition merken und beim `MOUSEBUTTONUP`-Ereignis dann zeichnen. Ausserdem sollte alles in Funktionen und/oder Objekten verschwinden.
Namen die mit "Nichts" belegt sind, bindet man normalerweise an `None` und nicht an ein leeres Tupel. Aber wie schon gesagt die ganzen Objekte auf Modulebene sollten sowieso nicht da sein.
Code: Alles auswählen
bj@s8n:~$ python forum2.py
File "forum2.py", line 26
if endpos != momentpos:
^
IndentationError: unexpected indent
Wenn man das behebt, dann tut das Programm im Grunde gar nichts weil die Bedingung der ``while``-Schleife in `paint()` *grundsätzlich* nicht erfüllt wird. Überleg Dir mal was Du da miteinander vergleichst und warum das nie gleich sein wird.
An dem Quelltext kann man aber auch nicht viel reparieren, weil das Konzept an sich fragwürdig ist. Du solltest Dir beim `MOUSEBUTTONDOWN`-Ereignis die Mausposition merken und beim `MOUSEBUTTONUP`-Ereignis dann zeichnen. Ausserdem sollte alles in Funktionen und/oder Objekten verschwinden.
Namen die mit "Nichts" belegt sind, bindet man normalerweise an `None` und nicht an ein leeres Tupel. Aber wie schon gesagt die ganzen Objekte auf Modulebene sollten sowieso nicht da sein.