zcn123 发表于 2021-1-31 11:36:12

为什么pygame不可以全屏?

import pygame
import sys
from pygame.locals import *
pygame.init()#初始化

clock=pygame.time.Clock()#控制帧率

size=width,height=600,400
speed=[-2,1]
bg=(255,255,255)

fullscreen=False
#创建指定大小的窗口
screen=pygame.display.set_mode(size)
#设置窗口标题
pygame.display.set_caption("Hello pygame!")
#加载图片
cat=pygame.image.load('arrow.jpg')
#获得图像的位置矩形
position=cat.get_rect()
cat=pygame.transform.rotate(cat,180)
r_head=cat                                  #右
l_head=pygame.transform.rotate(cat,180)   #左
u_head=pygame.transform.rotate(cat,270)   #上
d_head=pygame.transform.rotate(cat,90)      #下

while 1:
    for event in pygame.event.get():
      if event.type==pygame.QUIT:
            sys.exit()

    if event.type==KEYDOWN:
      if event.key==K_LEFT:
            speed=[-1,0]
            cat=r_head
      if event.key==K_RIGHT:
            speed=
            cat=l_head
      if event.key==K_UP:
            speed=
            cat=u_head
      if event.key==K_DOWN:
            speed=
            cat=d_head

      if event.key == K_F11:
            fullscreen = not fullscreen
            if fullscreen:
                screen = pygame.display.set_mode((1920,1080),FULLSCREEN | HWSURFACE)
            else:
                screen = pygame.display.set_mode(size)

    #开始移动
    position = position.move(speed)

    if position.left<0 or position.right>width:
      #翻转图像,水平翻转为True,竖直翻转为False
      cat=pygame.transform.flip(cat,True,False)
      #反方向移动
      speed=-speed

    if position.top<0 or position.bottom>height:
      cat = pygame.transform.flip(cat, False, True)
      speed = -speed


    #填充背景
    screen.fill(bg)
    #更新图像
    screen.blit(cat,position)
    #更新界面
    pygame.display.flip()
    #延迟画面(10ms)
    #pygame.time.delay(10)
    clock.tick(100)

Twilight6 发表于 2021-1-31 11:48:14



试试这个代码:


import pygame
import sys
from pygame.locals import *
pygame.init()#初始化

clock=pygame.time.Clock()#控制帧率

size=width,height=600,400
speed=[-2,1]
bg=(255,255,255)

fullscreen=False
#创建指定大小的窗口
screen=pygame.display.set_mode(size)
#设置窗口标题
pygame.display.set_caption("Hello pygame!")
#加载图片
cat=pygame.image.load('arrow.jpg')
#获得图像的位置矩形
position=cat.get_rect()
cat=pygame.transform.rotate(cat,180)
r_head=cat                                  #右
l_head=pygame.transform.rotate(cat,180)   #左
u_head=pygame.transform.rotate(cat,270)   #上
d_head=pygame.transform.rotate(cat,90)      #下

while 1:
    for event in pygame.event.get():
      if event.type==pygame.QUIT:
            sys.exit()

      if event.type==KEYDOWN:
            if event.key==K_LEFT:
                speed=[-1,0]
                cat=r_head
            if event.key==K_RIGHT:
                speed=
                cat=l_head
            if event.key==K_UP:
                speed=
                cat=u_head
            if event.key==K_DOWN:
                speed=
                cat=d_head
   
            if event.key == K_F11:
                fullscreen = not fullscreen
                if fullscreen:
                  screen = pygame.display.set_mode((1920,1080),FULLSCREEN | HWSURFACE)
                else:
                  screen = pygame.display.set_mode(size)

    #开始移动
    position = position.move(speed)

    if position.left<0 or position.right>width:
      #翻转图像,水平翻转为True,竖直翻转为False
      cat=pygame.transform.flip(cat,True,False)
      #反方向移动
      speed=-speed

    if position.top<0 or position.bottom>height:
      cat = pygame.transform.flip(cat, False, True)
      speed = -speed


    #填充背景
    screen.fill(bg)
    #更新图像
    screen.blit(cat,position)
    #更新界面
    pygame.display.flip()
    #延迟画面(10ms)
    #pygame.time.delay(10)
    clock.tick(100)

sunrise085 发表于 2021-1-31 12:01:28

while 1 循环的第二个if的缩进导致的。第二个if也应该在for循环内。
修改这个就没有问题了

另外下次发代码请用代码格式,那样更容易帮你看程序问题。
发帖的时候,编辑框上方工具区有个"<>”按钮,是发代码用的

zcn123 发表于 2021-1-31 12:45:50

sunrise085 发表于 2021-1-31 12:01
while 1 循环的第二个if的缩进导致的。第二个if也应该在for循环内。
修改这个就没有问题了



谢谢大佬提醒

zcn123 发表于 2021-1-31 12:50:49

Twilight6 发表于 2021-1-31 11:48
试试这个代码:

大佬,你这个也不行,按f11没有任何反应,感觉可能是我的电脑不支持全屏

Twilight6 发表于 2021-1-31 12:52:41

zcn123 发表于 2021-1-31 12:50
大佬,你这个也不行,按f11没有任何反应,感觉可能是我的电脑不支持全屏


好吧,你运行代码后有点击下弹出的窗口吗?点击完再试试 F11

zcn123 发表于 2021-1-31 13:02:09

Twilight6 发表于 2021-1-31 12:52
好吧,你运行代码后有点击下弹出的窗口吗?点击完再试试 F11

我点了,没用

zcn123 发表于 2021-1-31 13:14:35

Twilight6 发表于 2021-1-31 12:52
好吧,你运行代码后有点击下弹出的窗口吗?点击完再试试 F11

我摸索出来了,我笔记本home键与f11键重合了,而按键触发的是home键效果,K_F11改成K_HOME就可以了

Twilight6 发表于 2021-1-31 13:16:14

zcn123 发表于 2021-1-31 13:14
我摸索出来了,我笔记本home键与f11键重合了,而按键触发的是home键效果,K_F11改成K_HOME就可以了



{:10_282:}原来如此

zcn123 发表于 2021-1-31 13:19:31

Twilight6 发表于 2021-1-31 13:16
原来如此

{:9_226:}

zcn123 发表于 2021-1-31 13:20:24

Twilight6 发表于 2021-1-31 13:16
原来如此

出现这种情况我也挺无语的
页: [1]
查看完整版本: 为什么pygame不可以全屏?