如何使这个 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 事件上。