Пытаясь отрисовать экран с помощью pygame, не удается заставить работать какой-либо метод - PullRequest
1 голос
/ 09 мая 2020

Это фрагмент моего кода, который вводит текст и отображает пиксели на экране, это формат команды! Пикселей 32,32 255,255,255

##Command Format !Pixel X,Y R,G,B
def screencontrol():
##now we open the PyGame window
(width, height) = (256, 256) #more window setup
screen = pygame.display.set_mode((width, height)) #more window setup
pygame.display.flip() #more window setup
global message
#global splitmsg
while True:
    commandmessage = message
    pygame.init()
    pygame.event.pump() ##keeps pygame window refreshed / not crash
    if "!pixel" == commandmessage.lower().split(" ", 1)[0]: #Split message and check for pixel command
        print("Received a draw pixel request!") #debug output

        coordsforpix = commandmessage.lower().split(" ", -1)[1]
        print("Extracting draw... ")
        plotpixx = coordsforpix.split(",", 2)[0]
        print("X = " + plotpixx)
        plotpixy =coordsforpix.split(",", 2)[1]
        print("Y = " + plotpixy)
        plotpixrgb = commandmessage.lower().split(" ", -1)[2]
        print("RGB = " + plotpixrgb)
        plotpixr = plotpixrgb.split(",", 3)[0]
        plotpixg =plotpixrgb.split(",", 3)[1]
        plotpixb =plotpixrgb.split(",", 3)[2]
        print("R G B = " + plotpixr + plotpixg + plotpixb)
        print("Done extracting")
        pygame.draw.circle(screen, tuple(map(int, plotpixrgb.split(",", -1))), (int(plotpixx), int(plotpixy)),  1)#plot point
        commandmessage = ""
        message = ""
        pass
    else:
        pass

Я выдергивал волосы в течение 2 дней, пытаясь заставить его работать, все остальное работает отлично, отладка выводит то, что должно, но он просто не отображает никаких пикселей ... Заранее спасибо!

1 Ответ

0 голосов
/ 09 мая 2020

pygame.display.flip() обновляет всю поверхность отображения на экране и должно быть выполнено в конце приложения l oop, но pygame.init() инициализирует все импортированные pygame модулей и выполняется только один раз. Это должна быть первая инструкция pygame.

def screencontrol():

    pygame.init() # init pygame

    ##now we open the PyGame window
    (width, height) = (256, 256) #more window setup
    screen = pygame.display.set_mode((width, height)) # create window

    global message
    #global splitmsg
    while True:
        commandmessage = message
        pygame.event.pump() ##k

        if "!pixel" == commandmessage.lower().split(" ", 1)[0]:
            # [...]

        pygame.display.flip() # update display at the end of the loop
...