pygame checkbox类在本地工作,但在导入时不工作

ulydmbyx  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(279)
import pygame
from stuff_that_works import Square_checkbox
pygame.init()

class MyGame:
    def __init__(self):
        self.gamestate = 'intro_screen'
        self.run = True
        self.SCREEN_WIDTH = 800
        self.SCREEN_HEIGHT = 600
        self.FPS = 30
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode((self.SCREEN_WIDTH, self.SCREEN_HEIGHT))
        pygame.display.set_caption('SM4')

    def options_Screen(self, event):
        self.screen.fill(defaults.BLACK)
        checkbox_1 = Square_checkbox(0, 0, self.screen, 30, 30, defaults.RED, defaults.WHITE, 'checkbox_1')
        checkbox_2 = Square_checkbox(40, 0, self.screen, 30, 30, defaults.RED, defaults.WHITE, 'checkbox_2')
        checkbox_3 = Square_checkbox(-100, -140, self.screen, 30, 30, defaults.RED, defaults.WHITE, 'checkbox_3')
        checkbox_4 = Square_checkbox(-100, -110, self.screen, 30, 30, defaults.RED, defaults.WHITE, 'checkbox_4')
        checkbox_5 = Square_checkbox(-100, -80, self.screen, 30, 30, defaults.RED, defaults.WHITE, 'checkbox_5')

        boxes = []
        boxes.append(checkbox_1)
        boxes.append(checkbox_2)

        for box in boxes:
            box.update_checkbox(event)
        for box in boxes:
            box.render_checkbox()

    def main(self):
        while self.run:
            self.clock.tick(self.FPS)
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    self.run = False                    

                if self.gamestate == 'options':
                    self.options(event)
                elif self.gamestate == 'intro_screen':
                    self.intro_screen()
            pygame.display.flip()

edit1:正如rabbid76提到的,去掉了有效的部分,增加了游戏循环。
我犯了一个错误 Checkbox 类,当在与pygame循环相同的文件上运行时,它可以正常工作,但在导入该类并创建示例时,它无法正常工作。
这个 self.active 未在对象上保存或覆盖。
我尝试使用@property获得相同的结果。
也尝试过使用 global active 但这会更改所有对象,而不仅仅是示例。
有人能帮我了解发生了什么事来找到解决方案吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题