如何使这个 pygame 程序在单击时从绘图状态变为非绘图状态,反之亦然?
How do I make this pygame program to change from a drawing state to non drawing state when clicked and vice versa?
我希望这种绘画模拟能够在按下鼠标按钮时开始绘图(立即释放按钮)。同样,按下按钮时,它应该停止绘制。
没有错误。在目前共享的情况下,它基本上始终保持落笔(绘图)模式。我已经尝试了 get_pressed
功能,但只有在按住该键时才能成功绘制。我尝试使它等于 (a,0,0)
并改变 a
来实现目标但没有成功。
经过几次尝试后,绘图模式立即打开或关闭,而不是单击。
这里是控制动作的部分:
while keepGoing:
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
elif event.type == pygame.MOUSEMOTION:
lineEnd = pygame.mouse.get_pos()
if pygame.MOUSEBUTTONUP:
pygame.draw.line(background, drawColor, lineStart, lineEnd, lineWidth)
lineStart = lineEnd
elif event.type == pygame.KEYDOWN:
myData = (event, background, drawColor, lineWidth, keepGoing)
myData = checkKeys(myData)
(event, background, drawColor, lineWidth, keepGoing) = myData
screen.blit(background, (0, 0))
myLabel = showStats(drawColor, lineWidth)
screen.blit(myLabel, (450, 450))
pygame.display.flip()
完整代码link:http://codeshare.io/gbPc0
这是您要执行的操作的最小示例:
import pygame
screen = pygame.display.set_mode((800, 600))
line_start = None
while True:
mouse_pos = pygame.mouse.get_pos()
for e in pygame.event.get():
if e.type == pygame.QUIT:
break
if e.type == pygame.MOUSEBUTTONUP:
line_start = None if line_start else mouse_pos
else:
if line_start:
pygame.draw.line(screen, pygame.color.Color('White'), line_start, mouse_pos, 1)
line_start = mouse_pos
pygame.display.flip()
continue
break
它通过简单地存储 None
或 [=12 中的最后鼠标位置来跟踪状态(我们处于绘图模式还是非绘图模式?) =] 在 MOUSEBUTTONUP
事件上。
我希望这种绘画模拟能够在按下鼠标按钮时开始绘图(立即释放按钮)。同样,按下按钮时,它应该停止绘制。
没有错误。在目前共享的情况下,它基本上始终保持落笔(绘图)模式。我已经尝试了 get_pressed
功能,但只有在按住该键时才能成功绘制。我尝试使它等于 (a,0,0)
并改变 a
来实现目标但没有成功。
经过几次尝试后,绘图模式立即打开或关闭,而不是单击。
这里是控制动作的部分:
while keepGoing:
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
elif event.type == pygame.MOUSEMOTION:
lineEnd = pygame.mouse.get_pos()
if pygame.MOUSEBUTTONUP:
pygame.draw.line(background, drawColor, lineStart, lineEnd, lineWidth)
lineStart = lineEnd
elif event.type == pygame.KEYDOWN:
myData = (event, background, drawColor, lineWidth, keepGoing)
myData = checkKeys(myData)
(event, background, drawColor, lineWidth, keepGoing) = myData
screen.blit(background, (0, 0))
myLabel = showStats(drawColor, lineWidth)
screen.blit(myLabel, (450, 450))
pygame.display.flip()
完整代码link:http://codeshare.io/gbPc0
这是您要执行的操作的最小示例:
import pygame
screen = pygame.display.set_mode((800, 600))
line_start = None
while True:
mouse_pos = pygame.mouse.get_pos()
for e in pygame.event.get():
if e.type == pygame.QUIT:
break
if e.type == pygame.MOUSEBUTTONUP:
line_start = None if line_start else mouse_pos
else:
if line_start:
pygame.draw.line(screen, pygame.color.Color('White'), line_start, mouse_pos, 1)
line_start = mouse_pos
pygame.display.flip()
continue
break
它通过简单地存储 None
或 [=12 中的最后鼠标位置来跟踪状态(我们处于绘图模式还是非绘图模式?) =] 在 MOUSEBUTTONUP
事件上。