Да, с помощью 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!
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()