fffccc8080 发表于 2023-7-18 06:57:46

能不能帮看看这个UI界面能弹出,但关不掉(已自己解决在四楼)

本帖最后由 fffccc8080 于 2023-7-20 08:59 编辑


按C键实现功能,弹出一个UI界面,再按C关闭,C键是个开关,但现在只能开,再按C时没反应了UI界面还在显示着呢。





import pygame,sys
pygame.init()
WINDOW_SIZE = (800, 600)
screen = pygame.display.set_mode(WINDOW_SIZE)
font = pygame.font.Font('joystix.ttf',30)

text = font.render('Hello,world!',True,(255,255,255))
text_rect = text.get_rect(center=(400,300))


#初始化UI界面状态
ui_visible = False

#游戏循环
while True:
        for event in pygame.event.get():
                if event.type == pygame.QUIT:
                        pygame.quit()
                        sys.exit()
                elif event.type == pygame.KEYDOWN:
                        if event.key == pygame.K_c:
                                #切换UI状态
                                ui_visible = not ui_visible
        #如果UI界面可见,渲染UI界面
        if ui_visible:
                pygame.draw.rect(screen,(255,0,0),(100,100,600,400))
                screen.blit(text, text_rect)

        #更新屏幕
        pygame.display.update()







如果UI界面可见,渲染UI界面。如果不可见的话,怎么关掉UI界面而不影响它底下的内容。
当然这种代码非常简单的,在if ui_visible的反向判断处直接 screen.fill((0,0,0))就好了。
如果是复杂的游戏界面的话,怎么办,总不能直接用screen.fill((0,0,0))吧。
那个游戏代码详见B站UP主,小豆冰棍儿说人话的视频,怎么用Python(pygame)写出塞尔达!

wp231957 发表于 2023-7-18 08:16:44

你这不是ui界面,所以不存在窗口,更无法关闭所谓的窗口

Ewan-Ahiouy 发表于 2023-7-18 08:29:17

你这是干嘛用的,如果想关闭窗口,直接用sys.exit()不就行了{:10_277:}

fffccc8080 发表于 2023-7-19 20:37:43

本帖最后由 fffccc8080 于 2023-7-19 21:03 编辑

import pygame,sys
pygame.init()
WINDOW_SIZE = (800, 600)
screen = pygame.display.set_mode(WINDOW_SIZE)
font = pygame.font.Font('joystix.ttf',30)
img = pygame.image.load('moshanshan.png')

text = font.render('Hello,world!world!',True,(255,255,255))
text_rect = text.get_rect(center=(400,300))

#初始化UI界面状态
ui_visible = False

def uixrfun():
        if ui_visible:
                screen.blit(img,(200,200))
                screen.blit(text, text_rect)

#游戏循环
while True:
        for event in pygame.event.get():
                if event.type == pygame.QUIT:
                        pygame.quit()
                        sys.exit()
                elif event.type == pygame.KEYDOWN:
                        if event.key == pygame.K_c:
                                #切换UI状态
                                ui_visible = not ui_visible
                                #print(ui_visible)
       
        # 渲染其他内容
        pygame.draw.rect(screen,(0,255,0),(100,100,600,400))

        #如果UI界面可见,渲染UI界面
        uixrfun()

        #更新屏幕
        pygame.display.update()




但这么写又可以了,达到了按C弹出图片以及文字,再按C关掉了图片及文字。用到了一个函数,函数调用前先渲染了一个其他内容。这个还是我自己勉强解决了。
页: [1]
查看完整版本: 能不能帮看看这个UI界面能弹出,但关不掉(已自己解决在四楼)