关于=与==的使用
本帖最后由 lzb1001 于 2022-7-13 21:37 编辑# 绘制圆形
import pygame
import sys
from pygame.locals import *
pygame.init()
WHITE = (255, 255, 255) # 白色
BLACK = (0, 0, 0) # 黑色
RED = (255, 0, 0) # 红色
GREY = (128, 128, 128) # 灰色
YELLOW = (255, 255, 0) # 黄色
BLUE = (0, 0, 255) # 蓝色
GREEN = (0, 128, 0) # 绿色
size = width, height = 640, 400
screen = pygame.display.set_mode(size) # 生成一个screen的Surface对象
pygame.display.set_caption('FishC Demo')
position = size//2, size//2
moving = False
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
if event.type == MOUSEBUTTONDOWN:
if event.button == 1:
moving = True
if event.type == MOUSEBUTTONUP:
if event.button == 1: # 好像可以省略不要
moving = False
if moving: # 也可写成if moving == True:
position = pygame.mouse.get_pos()
screen.fill(WHITE)
pygame.draw.circle(screen, BLACK, position, 3, 0)
pygame.draw.circle(screen, RED, position, 25, 1)
pygame.draw.circle(screen, YELLOW, position, 50, 1)
pygame.draw.circle(screen, BLUE, position, 75, 1)
pygame.draw.circle(screen, GREEN, position, 100, 1)
pygame.draw.circle(screen, GREY, position, 125, 1)
pygame.draw.circle(screen, BLACK, position, 150, 1)
pygame.display.flip()
clock.tick(10)
------------------------------------------
Windows 10 专业版 | Python 3.7.6
------------------------------------------
【我的问题】
1、=是赋值,比如moving = False,而==是判断,比如if moving == True或if event.button == 1
上面这样理解不知道对不对?
2、见代码中的蓝色字体,该行代码是否可以省略?
3、当if moving:时,也就是鼠标左键按下时,实时获得鼠标当前的坐标,而如果把if moving:改成if moving == False时,为何不需要鼠标左键,即只要鼠标移动到哪,同心圆就移动到哪呢?这个问题不知道大家理不理解我的困惑在哪 - > 代码中if moving == False与if event.button == 1:关联不是嘛?
******************************
感谢大神不吝赐教,为新手解疑释惑。
赠人玫瑰,手有余香,好人一生平安! 1.对
2.不可以省略,我给你分析一下:
if event.type == MOUSEBUTTONUP: #这里表示如果按下鼠标,并不直接代表按下鼠标左键,所以需要下面进一步判断是按下鼠标哪一个键,不能省略,不然按下鼠标右键也算了
if event.button == 1: # 判断是否按下的为鼠标左键,1 表示鼠标左键
moving = False
3.因为你前面代码:
if event.type == MOUSEBUTTONDOWN:
if event.button == 1: #当按下鼠标左键即可以移动圆
moving = True
所以如果改成:
if moving == False
就成了:
如果不按下鼠标左键
因为:
moving 为 True 时,就代表按下鼠标左键,反之松开,所以会导致你说的效果相反!
4.对
本帖最后由 lzb1001 于 2022-7-13 21:33 编辑
python爱好者. 发表于 2022-7-13 18:29
1.对
2.不可以省略,我给你分析一下:
谢谢大神指点。
2、我的想法是:
---当按下鼠标按键的时候,才需要进一步判断按下的是鼠标的哪个键,也就是当按下鼠标按键的时候,if event.button == 1这行代码为必须
---而当释放鼠标按键的时候,可以不需要判断释放的是鼠标的哪个键,也就是当释放鼠标按键的时候,不需要if event.button == 1这行代码
经测试,如果把释放鼠标按键时候的该行代码删除,运行起来效果好像不受任何影响。 本帖最后由 lzb1001 于 2022-7-13 22:13 编辑
python爱好者. 发表于 2022-7-13 18:29
1.对
2.不可以省略,我给你分析一下:
我将代码中while循环语句修改为如下:
……
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
if event.button == 1:
if event.type == MOUSEBUTTONDOWN:
moving = True
if event.type == MOUSEBUTTONUP:
moving = False
……
结果运行后返回如下错误提示!
====================== RESTART: D:\work\p16_6_pg_3 - 副本.py ==============
pygame 2.1.2 (SDL 2.0.18, Python 3.7.6)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "D:\work\p16_6_pg_3 - 副本.py", line 51, in <module>
if event.button == 1:
AttributeError: 'Event' object has no attribute 'button'
页:
[1]