[英]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_start
上MOUSEBUTTONUP
事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.