Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 23, 2010 16:35:04

luckmaster
От:
Зарегистрирован: 2009-07-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

pygame - изменение размера окна

и снова здравствуйте! :)

вот еще есть проблемка с изменением размеров окна.
Вот код для наглядности:

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480), pygame.RESIZABLE)

while True:
for e in pygame.event.get():
if e.type == pygame.QUIT: exit(0)
screen.fill((255, 255, 255))
pygame.display.update()
В результате выполнения этого кода размер окна изменяется, но проблема в том что область для рисования остается прежнего размера.
Ну например если увеличить окно, тогда в верхнем левом углу будет белый квадрат размером 640 * 480, а вся остальная область окна будет черной. А мне нужно чтобы этот белый квадрат увеличивался вместе с размерами самого окна.

Кто что посоветует сделать?



Офлайн

#2 Янв. 24, 2010 07:18:46

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

pygame - изменение размера окна

> белый квадрат размером 640 * 480
(Овал, это круг вписанный в квадрат 3x4 :-)

Посмотри что будет с pygame.display.get_surface().get_size(), любопытно. Возможно потребуется ловить событие и что-то химичить ручками.
А может вообще проблема решится, если ты перейдешь на pygame.display.get_surface(), и не будешь использовать некий screen.

p.s. Вероятно при изменении разрешения, создается новый Surface, так как их размер не меняем, хотя х.з.

..bw



Отредактировано (Янв. 24, 2010 07:19:56)

Офлайн

#3 Янв. 24, 2010 11:25:42

luckmaster
От:
Зарегистрирован: 2009-07-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

pygame - изменение размера окна

> Вероятно при изменении разрешения, создается новый Surface
Для меня было бы проще если бы так оно и было, но нет - Surface остается старого размера.
pygame.display.get_surface().get_size() возвращает старое разрешение 640 * 480.

Но вобще я уже разобрался, действительно надо было ловить событие:
Вот пример, если вдруг кому понадобится http://www.pygame.org/wiki/WindowResizing?parent=CookBook

Благодарю за помощь.



Офлайн

#4 Янв. 30, 2010 16:52:48

gabin
От:
Зарегистрирован: 2009-03-07
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

pygame - изменение размера окна

У меня такая проблема - есть код, который обрабатывает событие изменения окна.

background_image_filename = 'image.jpg'

import pygame
from pygame.locals import *
from sys import exit

SCREEN_SIZE = (640, 480)

pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE, 32)

background = pygame.image.load(background_image_filename).convert()

while True:

event = pygame.event.wait()
if event.type == QUIT:
exit()
if event.type == VIDEORESIZE:
SCREEN_SIZE = event.size
screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE, 32)
pygame.display.set_caption("Window resized to "+str(event.size))

screen_width, screen_height = SCREEN_SIZE
for y in range(0, screen_height, background.get_height()):
for x in range(0, screen_width, background.get_width()):
screen.blit(background, (x, y))

pygame.display.update()
Код выполняется и размеры окна можно менять, но если сделать размеры окна больше, чем при создании, то скрипт завершается с ошибкой:
Fatal Python error: (pygame parachute) Segmentation Fault
хотя по идее, новое пространство должно заполняться всё тем же background`ом.
В качестве image.jpg брал рисунок размером 640х480.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version