1

I have function for writing to the screen and I'm sure its fine but it still doesn't work.

The problem is when the user types their username it doesn't appear on the screen. It's right in the code after the check whether the event is key event.
The name of the function that returns the key that pressed: get_key().
the name of the function that print the string: print_str_by_place().

Here is my code:

def print_str_by_place(str, row, col):
    font = pygame.font.Font(None, 18)
    label = font.render(str, 1, black)
    screen.blit(label, (row, col))


def get_key():
    while 1:
        event = pygame.event.poll()
        if event.type == pygame.KEYDOWN:
            return event.key
        else:
            pass

pygame.init()
screen = pygame.display.set_mode((700, 700))
done = True
login = True
#sigh_up = False
user_name_p = False
password_p = False
username_lst = []
username = ""
password_lst = []
password = ""
row_u = 343
col_u = 260
while done:
    if login:
        img = pygame.image.load("LOGIN.png")
        screen.blit(img,(0,0))


        for event in pygame.event.get():
            if event.type == pygame.MOUSEBUTTONUP:
                mouse = pygame.mouse.get_pos()
                if if_button_pressed(255,418,331,355,mouse):      # if the username pressed
                    username_p = True
                    password_p = False

                elif if_button_pressed(255,418,382,403,mouse):      # if the password pressed
                    username_p = False
                    password_p = True

                elif if_button_pressed(520,675,615,666,mouse):     #if sigh up pressed
                    login = False
                    break
                else:
                    user_name_p = False
                    password_p = False

            if event.type == pygame.KEYDOWN:
                if user_name_p:
                    pygame.font.init()
                    key = get_key()
                    if key == pygame.K_BACKSPACE:
                      username = username[0:-1]
                    elif key == pygame.K_RETURN:
                      break
                    elif key <= 127:
                      username.append(chr(key))
                    username = username_lst.join("")
                    print_str_by_place(username,345,260)


            if event.type == pygame.QUIT:
                done = False
        pygame.display.update()

    else:
        img = pygame.image.load("sign_up.png")
        screen.blit(img,(0,0))
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = False

            if event.type == pygame.MOUSEBUTTONUP:
                mouse = pygame.mouse.get_pos()

                if if_button_pressed(21,230,621,680,mouse):      # if Back pressed
                    login = True
                    break
    pygame.display.update()


    # get string and print it by place
    def print_str_by_place(str, row, col):
        font = pygame.font.Font(None, 18)
        label = font.render(str, 1, black)
        screen.blit(label, (row, col))


    def get_key():
        while 1:
            event = pygame.event.poll()
            if event.type == pygame.KEYDOWN:
                return event.key
            else:
                pass

    pygame.init()
    screen = pygame.display.set_mode((700, 700))
    done = True
    login = True
    #sigh_up = False
    user_name_p = False
    password_p = False
    username_lst = []
    username = ""
    password_lst = []
    password = ""
    row_u = 343
    col_u = 260
    while done:
        if login:
            img = pygame.image.load("LOGIN.png")
            screen.blit(img,(0,0))


            for event in pygame.event.get():
                if event.type == pygame.MOUSEBUTTONUP:
                    mouse = pygame.mouse.get_pos()
                    if if_button_pressed(255,418,331,355,mouse):      # if the username pressed
                        username_p = True
                        password_p = False

                    elif if_button_pressed(255,418,382,403,mouse):      # if the password pressed
                        username_p = False
                        password_p = True

                    elif if_button_pressed(520,675,615,666,mouse):     #if sigh up pressed
                        login = False
                        break
                    else:
                        user_name_p = False
                        password_p = False

                if event.type == pygame.KEYDOWN:
                    if user_name_p:
                        pygame.font.init()
                        key = get_key()
                        if key == pygame.K_BACKSPACE:
                          username = username[0:-1]
                        elif key == pygame.K_RETURN:
                          break
                        elif key <= 127:
                          username.append(chr(key))
                        username = username_lst.join("")
                        print_str_by_place(username,345,260)


                if event.type == pygame.QUIT:
                    done = False
            pygame.display.update()

        else:
            img = pygame.image.load("sign_up.png")
            screen.blit(img,(0,0))
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    done = False

                if event.type == pygame.MOUSEBUTTONUP:
                    mouse = pygame.mouse.get_pos()

                    if if_button_pressed(21,230,621,680,mouse):      # if Back pressed
                        login = True
                        break
        pygame.display.update()

What is wrong?

copolii
  • 14,208
  • 10
  • 51
  • 80
L.ban
  • 21
  • 2

0 Answers0