繁体   English   中英

如何使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()

完整的代码链接: 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 ,或在过去的鼠标位置line_startMOUSEBUTTONUP事件。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM