用Pygame绘制错误

时间:2018-01-29 14:25:40

标签: python pygame

我在使用python应用程序时遇到了麻烦。

我已经开设了一些课程让我的工作变得更轻松,你可以全部检查in this Github repo

我的主要课程是:

from UI import *

window = Window(Size(1000, 700), "WiSync", "logo.png")

button1 = Button(Size(50, 30), Position(10, 10), UIThemes.light)
window.add(button1)

window.start()

它没有给我任何错误,但它只是没有画出任何东西。我知道所有的数据都没问题,因为在我的抽屉课上我有一个print()电话:

def draw_rect(zone: Zone, color: Color, window: pygame.Surface):
    print("Drawing rect " + zone.to_string() + " with color " + color.to_string())
    pygame.draw.rect(window, color.get(), zone.get())

在我的应用循环中,有一条连续的消息:Drawing rect Zone(10, 10, 60, 40) with color flat_light_sea_blue,但它不会在屏幕上显示任何内容。

很抱歉,如果我还不够清楚,但我是西班牙语,这很难解释。如果您有任何其他疑问,请询问。

感谢您的帮助,您很棒;)

1 个答案:

答案 0 :(得分:2)

问题是您没有在代码中的任何位置调用pygame.display.update()

你确实正在绘制这些Rect,但除非这条线位于你的主赛事循环/主游戏循环中,否则它们将不会出现在你的显示器上。

解决此问题:

  • 在完成所有绘图后,只需在主循环的末尾添加行pygame.display.update()

在你的回购中,我看了UI.py。在__main_loop类的Window方法中,当然不需要行pygame.display.update()

这是固定代码:

def __main_loop(self):
        while self.running:
            # Draw all the elements
            for element in self.elements:
                element.draw()

            for event in pygame.event.get():
                if event.type is pygame.QUIT:
                    self.running = False

             pygame.display.update()

我希望这个答案对您有所帮助,如果您有任何其他问题,请随时在下面发表评论!