Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Открывается сразу 3 окна в Python Pygame, как сделать

Матвей Коротков Ученик (149), на голосовании 1 месяц назад
Я пишу скрипт на Python PyGame, в котором открывается окно, где написан текст. Мне надо сделать так, чтобы сразу открывалось 3 таких окна, и не понимаю как. Кто нибудь знает? Вот, если что скрипт, с помощью которого я сделал 1 такое окно:

import pygame

from tkinter import *

from tkinter import messagebox



pygame.init()

screen = pygame.display.set_mode((850, 150))

screen.fill((0, 0, 0))



pygame.display.set_caption("EXE")

font = pygame.font.SysFont("Lucida Console", 20)

label = font.render("HAHHHAAHHAHAHAHHAHAHA", 1, (12, 140, 0, 1))



screen.blit(label, (50, 50))

pygame.display.update()



while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

pygame.quit()
Голосование за лучший ответ
Сухачев Мудрец (13232) 2 месяца назад
Да, с помощью PyGame можно создать сразу несколько окон, но это требует немного другой организации кода.

Основная идея:

Создаем отдельные классы для каждого окна: Каждый класс будет управлять своим окном, отрисовкой текста и обработкой событий.

Инициализируем несколько экземпляров классов: Создаем 3 объекта, каждый из которых будет представлять одно из ваших окон.

Запускаем цикл событий: Вместо обработки событий только для одного окна, мы будем обрабатывать события для всех созданных окон.

Пример кода:
 import pygame  



class Window:

def __init__(self, title, text, position):

self.width = 850

self.height = 150

self.screen = pygame.display.set_mode((self.width, self.height))

self.screen.fill((0, 0, 0))

pygame.display.set_caption(title)

self.font = pygame.font.SysFont("Lucida Console", 20)

self.label = self.font.render(text, 1, (12, 140, 0, 1))

self.position = position



def draw(self):

self.screen.blit(self.label, self.position)

pygame.display.update()



def handle_events(self, event):

if event.type == pygame.QUIT:

pygame.quit()



pygame.init()



# Создаем 3 окна

window1 = Window("Окно 1", "Текст окна 1", (50, 50))

window2 = Window("Окно 2", "Текст окна 2", (50, 50))

window3 = Window("Окно 3", "Текст окна 3", (50, 50))



# Запускаем цикл событий

running = True

while running:

for event in pygame.event.get():

window1.handle_events(event)

window2.handle_events(event)

window3.handle_events(event)



# Отрисовываем окна

window1.draw()

window2.draw()

window3.draw()



# Обрабатываем другие события

# ...



# Обновляем экран

pygame.display.flip()


Объяснение:

Window - класс, представляющий одно окно.
__init__ - инициализирует окно, устанавливает заголовок, отрисовывает текст.
draw - отрисовывает окно.
handle_events - обрабатывает события для этого окна.
В основном цикле создаются три экземпляра класса Window, каждый из которых представляет одно окно.
В цикле событий мы обрабатываем события для каждого окна с помощью handle_events.
Также в цикле мы вызываем draw для каждого окна, чтобы они отображались на экране.
Важно:

В данном примере окна будут располагаться друг над другом, так как они создаются с использованием одного и того же метода pygame.display.set_mode. Если вам нужна более гибкая организация окон, вы можете рассмотреть использование дополнительных библиотек (например, tkinter или PyQt).
Не забывайте, что pygame.display.update нужно вызывать только для того окна, которое вы обновляете, чтобы избежать лишних перерисовок.
Надеюсь, этот пример поможет вам создать несколько окон в PyGame!
рома абоба Ученик (231) 2 месяца назад
skib id=zov

toi.net .dafuq
СухачевМудрец (13232) 2 месяца назад
zovcBo
рома абоба Ученик (231) Сухачев, skibidi
Хлебушек Оракул (76354) 2 месяца назад
толку тебе от этих трех окон, если ты понятия не имеешь как их создать.

У тебя есть
 screen = pygame.display.set_mode((850, 150)) 
отсюда и шагай...
 screen1 = pygame.display.set_mode((850, 150))
screen2 = pygame.display.set_mode((850, 150))
...
Похожие вопросы