버튼, 개체 등의 크기를 창 크기에 따라 어떻게 만들 수 있습니까?

RMR_MD

창 크기를 조정하는 방법을 알고 있지만 코드를 실행하면 창 크기 만 조정됩니다. 버튼, 개체 등은 그렇지 않습니다. 창에 따라 크기가 조정되도록하려면 어떻게해야합니까? 이 질문이 어떻게 든 이해하기 어려운 경우 창 크기를 조정하고 주석을 읽는 방법을 묻는 내 질문으로 이동할 수 있습니다. 필요한 경우 코드는 다음과 같습니다.

import pygame
from pygame.locals import *

pygame.init()

WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600

SURFACE = pygame.HWSURFACE|pygame.DOUBLEBUF|pygame.RESIZABLE
win = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), SURFACE)
win.fill((0, 180, 210))

pygame.display.set_caption("Baloon War!")
icon = pygame.image.load("Baloon war icon.png")
pygame.display.set_icon(icon)

centre_point = (WINDOW_WIDTH//2, WINDOW_HEIGHT//2)

class button():
    def __init__(self, color, x, y, width, height, text=''):
        self.color = color
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.text = text

    def draw(self, win, outline=None):
        # Call this method to draw the button on the screen
        if outline:
            pygame.draw.rect(win, outline, (self.x - 2, self.y - 2, self.width + 4, self.height + 4), 0)

        pygame.draw.rect(win, self.color, (self.x, self.y, self.width, self.height), 0)

        if self.text != '':
            font = pygame.font.SysFont('comicsans', 60)
            text = font.render(self.text, 1, (0, 0, 0))
            win.blit(text, (self.x + (self.width / 2 - text.get_width() / 2), self.y + (self.height / 2 - text.get_height() / 2)))

    def isOver(self, pos):
        # Pos is the mouse position or a tuple of (x,y) coordinates
        if pos[0] > self.x and pos[0] < self.x + self.width:
            if pos[1] > self.y and pos[1] < self.y + self.height:
                return True

        return False

    def rescale(self):
        new_size = int(WINDOW_WIDTH * self.scale_factor)
        x, y = self.rect.center
        self.image = pygame.transform.smoothscale(self.original, (new_size, new_size))
        self.rect = self.image.get_rect()
        self.rect.center = (x, y)

def redrawMenuWindow():
    win.fill((0, 255, 110))
    greenButton.draw(win, (0, 0, 0))
    redButton.draw(win, (0, 0, 0))

def redrawGameWindow():
    win.fill((0, 150, 210))
    pygame.draw.rect(win, (0, 250, 110),(0, 450, 800, 250))




greenButton = button((0, 255, 0), 280, 255, 250, 100, "Start")
redButton = button ((255, 0, 0), 280, 380, 250, 100, "Quit")

game_state = "menu"
run = True
while run:
    if game_state == "menu":
        redrawMenuWindow()
    elif game_state == "game":
        redrawGameWindow()
    pygame.display.update()

    for event in pygame.event.get():
        pos = pygame.mouse.get_pos()

        if event.type == pygame.QUIT:
            run = False
            pygame.quit()
            quit()
        elif event.type == pygame.VIDEORESIZE:
            WINDOW_WIDTH = event.w
            WINDOW_HEIGHT = event.h
            win = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), SURFACE)

        if event.type == pygame.MOUSEBUTTONDOWN:
            if greenButton.isOver(pos):
                print("clicked the button")
                game_state = "game"
            if redButton.isOver(pos):
                print("clicked the 2button")
                run = False
                pygame.quit()
                quit()


        if event.type == pygame.MOUSEMOTION:
            if greenButton.isOver(pos):
                greenButton.color = (105, 105, 105)
            else:
                greenButton.color = (0, 255, 0)
            if redButton.isOver(pos):
                redButton.color = (105, 105, 105)
            else:
                redButton.color = (255, 0, 0)

        pygame.display.update()
RMR_MD

pygame.display.toggle_fullscreen()명령을 사용하십시오 . 이에 대한 문서를 읽을 수 있습니다 (링크 : https://www.pygame.org/docs/ref/display.html#pygame.display.toggle_fullscreen ). 다음은 예제 코드입니다.

if event.key == K_f:
    pygame.display.toggle_fullscreen()

더 이상 할 필요가 없습니다. 누를 수있는 버튼을 만든 다음이 명령을 사용할 수 있습니다. 정말 사용하기 쉽습니다. 내가 당신을 도울 수 있기를 바랍니다, 늙은이! :) 오늘 방금 찾았으므로 여러분과 다른 사람들이이 답을 찾을 수 있도록 대답하고 싶었습니다!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Xubuntu에서 창 버튼의 크기를 어떻게 늘릴 수 있습니까?

분류에서Dev

생성자 매개 변수에 따라 배열 크기를 어떻게 만들 수 있습니까?

분류에서Dev

전체 창을 기준으로 버튼의 마우스 좌표를 어떻게 덮어 쓸 수 있습니까?

분류에서Dev

Boost.Asio는 어떻게 배열의 크기와 같은 크기의 버퍼 객체를 만들 수 있습니까?

분류에서Dev

더 읽기 버튼은 어떻게 만들 수 있습니까?

분류에서Dev

JFace의 TableViewer에서 어떻게 체크 박스를 만들 수 있습니까?

분류에서Dev

.less에 두 개의 클래스가있는 버튼에 대한 CSS 선택기를 어떻게 만들 수 있습니까?

분류에서Dev

Tkinter에서 전체 창 높이를 채우는 구분 기호를 어떻게 만들 수 있습니까?

분류에서Dev

버튼의 크기를 어떻게 조정할 수 있습니까? 빠른

분류에서Dev

시간대에 따라이 기능을 어떻게 만들 수 있습니까?

분류에서Dev

Asp.Net MVC 닫기 및 전체 화면 버튼을 어떻게 만들 수 있습니까?

분류에서Dev

부울 객체 속성에 따라 v-if를 어떻게 만들 수 있습니까?

분류에서Dev

Unity GUI에서 가로로 터치하는 세 개의 버튼을 어떻게 만들 수 있습니까?

분류에서Dev

그래프 편집기 창에서 사용자가 만든 새 버튼을 어떻게 부모로 만들 수 있습니까?

분류에서Dev

어떻게 ArrayListMultiMap의 값의 크기에 따라 목록에 키를 추가 할 수 있습니까?

분류에서Dev

다른 CCombo의 값에 따라 변경되는 CCombo를 SWT에서 어떻게 만들 수 있습니까?

분류에서Dev

보안 타이머 기반 버튼을 어떻게 만들 수 있습니까?

분류에서Dev

Java에서 버튼을 눌러 사용자 정의 키 바인드를 어떻게 만들 수 있습니까?

분류에서Dev

유체 버튼을 어떻게 만들 수 있습니까?

분류에서Dev

Outlook에서 내 CSS 버튼의 크기를 어떻게 변경할 수 있습니까?

분류에서Dev

Flutter : 각기 다른 크기의 스크롤 가능한 ListView를 사용하여 두 개의 열 레이아웃을 어떻게 만들 수 있습니까?

분류에서Dev

어떻게 동적으로 버튼이있는 ScrollView에서 스크롤 할 만든 만들 수 있습니까?

분류에서Dev

다른 두 개의 팝업 창을 어떻게 만들 수 있습니까?

분류에서Dev

Tkinter-어떻게 버튼을 만들어 새 창을 만들고 주 창을 닫을 수 있습니까?

분류에서Dev

Javascript / CSS에서 일정한 크기의 상자를 어떻게 만들 수 있습니까?

분류에서Dev

내 Android 앱에서 사용할 올바른 크기의 이미지를 어떻게 만들 수 있습니까?

분류에서Dev

다양한 크기의 이미지에 적응하는 갤러리를 어떻게 만들 수 있습니까?

분류에서Dev

어떻게 내용 엔티티와 관련된의 결합 된 값에 따라 열 오라클에서보기를 만들 수 있습니까?

분류에서Dev

창 크기를 어떻게 늘릴 수 있습니까?

Related 관련 기사

  1. 1

    Xubuntu에서 창 버튼의 크기를 어떻게 늘릴 수 있습니까?

  2. 2

    생성자 매개 변수에 따라 배열 크기를 어떻게 만들 수 있습니까?

  3. 3

    전체 창을 기준으로 버튼의 마우스 좌표를 어떻게 덮어 쓸 수 있습니까?

  4. 4

    Boost.Asio는 어떻게 배열의 크기와 같은 크기의 버퍼 객체를 만들 수 있습니까?

  5. 5

    더 읽기 버튼은 어떻게 만들 수 있습니까?

  6. 6

    JFace의 TableViewer에서 어떻게 체크 박스를 만들 수 있습니까?

  7. 7

    .less에 두 개의 클래스가있는 버튼에 대한 CSS 선택기를 어떻게 만들 수 있습니까?

  8. 8

    Tkinter에서 전체 창 높이를 채우는 구분 기호를 어떻게 만들 수 있습니까?

  9. 9

    버튼의 크기를 어떻게 조정할 수 있습니까? 빠른

  10. 10

    시간대에 따라이 기능을 어떻게 만들 수 있습니까?

  11. 11

    Asp.Net MVC 닫기 및 전체 화면 버튼을 어떻게 만들 수 있습니까?

  12. 12

    부울 객체 속성에 따라 v-if를 어떻게 만들 수 있습니까?

  13. 13

    Unity GUI에서 가로로 터치하는 세 개의 버튼을 어떻게 만들 수 있습니까?

  14. 14

    그래프 편집기 창에서 사용자가 만든 새 버튼을 어떻게 부모로 만들 수 있습니까?

  15. 15

    어떻게 ArrayListMultiMap의 값의 크기에 따라 목록에 키를 추가 할 수 있습니까?

  16. 16

    다른 CCombo의 값에 따라 변경되는 CCombo를 SWT에서 어떻게 만들 수 있습니까?

  17. 17

    보안 타이머 기반 버튼을 어떻게 만들 수 있습니까?

  18. 18

    Java에서 버튼을 눌러 사용자 정의 키 바인드를 어떻게 만들 수 있습니까?

  19. 19

    유체 버튼을 어떻게 만들 수 있습니까?

  20. 20

    Outlook에서 내 CSS 버튼의 크기를 어떻게 변경할 수 있습니까?

  21. 21

    Flutter : 각기 다른 크기의 스크롤 가능한 ListView를 사용하여 두 개의 열 레이아웃을 어떻게 만들 수 있습니까?

  22. 22

    어떻게 동적으로 버튼이있는 ScrollView에서 스크롤 할 만든 만들 수 있습니까?

  23. 23

    다른 두 개의 팝업 창을 어떻게 만들 수 있습니까?

  24. 24

    Tkinter-어떻게 버튼을 만들어 새 창을 만들고 주 창을 닫을 수 있습니까?

  25. 25

    Javascript / CSS에서 일정한 크기의 상자를 어떻게 만들 수 있습니까?

  26. 26

    내 Android 앱에서 사용할 올바른 크기의 이미지를 어떻게 만들 수 있습니까?

  27. 27

    다양한 크기의 이미지에 적응하는 갤러리를 어떻게 만들 수 있습니까?

  28. 28

    어떻게 내용 엔티티와 관련된의 결합 된 값에 따라 열 오라클에서보기를 만들 수 있습니까?

  29. 29

    창 크기를 어떻게 늘릴 수 있습니까?

뜨겁다태그

보관