ループごとに表面をクリア
def draw(self):
# clear screen."
self.screen.fill( self.color_bg )
# first draw background
# Then buttons
# then any extra top level text
# update
pygame.display.flip()
ヒント: 色については、 pygame.Color() のような人間の名前で呼び出すことができますred(gray20そして、背景gray80とテキストに使用するために、良いコントラストを持っています。)
from pygame import Color
text = Color('gray20')
あなたのボタン、疑似コード。修正: インスタンス メンバーとして色を移動しました。
class Button(object):
def __init__(self, text, rect=None):
self.color_bg = Color("gray20")
self.color_text = color("gray80")
if rect is None: rect = Rect(0,0,1,1)
self.rect = rect
self._render()
def _render(self):
# draw button and .render() font, cache to surface for later.
self.surface_cached = self.surface.copy()
# render text
#if size changes, save rect.size of cached surface , mantaining location
self.rect.size = cache.get_rect.size
def draw(self):
# draw cached surface
screen.blit( self.surface_cached, self.rect)
testClick使用http://www.pygame.org/docs/ref/rect.html#Rect.collidepoint _Rect.collidepoint