【发布时间】:2016-02-25 17:21:15
【问题描述】:
代码:
#!/usr/bin/python
import pygame, time, sys, random, os
from pygame.locals import *
from time import gmtime, strftime
pygame.init()
w = 640
h = 400
screen = pygame.display.set_mode((w, h),RESIZABLE)
clock = pygame.time.Clock()
x = y = 100
def starting():
basicfont = pygame.font.SysFont(None, 48)
text = basicfont.render('Starting...', True, (255, 255, 255), (0, 0, 255))
textrect = text.get_rect()
textrect.centerx = screen.get_rect().centerx
textrect.centery = screen.get_rect().centery
screen.fill((0, 0, 255))
screen.blit(text, textrect)
def taskbar():
basicfont = pygame.font.SysFont(None, 24)
taskbarrect = pygame.Rect((0, int(h-40)), (int(w), int(h)))
text = basicfont.render(strftime("%Y-%m-%d", gmtime()), True, (0, 0, 0))
text2 = basicfont.render(strftime("%H:%M:%S", gmtime()), True, (0, 0, 0))
taskbarrect.blit(text, (w - 100, h - 37))
taskbarrect.blit(text2, (w - 100, h - 17))
pygame.display.update()
starting()
screen.fill((255,255,255))
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type==VIDEORESIZE:
w = event.dict['size'][0]
h = event.dict['size'][1]
screen=pygame.display.set_mode(event.dict['size'],RESIZABLE)
taskbar()
因为我想让我的代码运行得更快,所以我想在它们之上创建表面和 blit rects,这样我就可以执行pygame.display.update(taskbarrect) 并加快我的代码速度。但是,我不知道如何创建多个表面。我尝试过taskbarrect=(xcoordinate, ycoordinate, width, length),然后对图像或文本或其他内容进行传输,但尝试显示tuple object has no attribute blit。尝试代码中的方法(由@elegent 建议)得到'pygame.Rect' object has no attribute 'blit'。
我做错了什么?
【问题讨论】:
-
仅供参考,当您不向我们提供一些实际发生错误的代码时,很难为您提供帮助。 ;)
-
你不需要创建一个新的 Surface;只需将文本粘贴到主屏幕上(请参阅我更新的答案)。
-
@elegent 会有很大不同吗?即fps会降低多少?
标签: python python-2.7 pygame pygame-surface