歌者文明清理员 发表于 2023-2-21 19:57:22

pygame多窗口

居然,pygame 似乎不能多窗口,有没有什么办法,比如线程?

...
screen = pygame.display.set_mode((640, 480))
screeb = pygame.display.set_mode((640, 480))

只有一个screeb窗口……

isdkz 发表于 2023-2-21 19:59:59

因为 pygame 使用了单例模式,也就是窗口只会被实例化一次,可以使用多进程解决,多线程不行

歌者文明清理员 发表于 2023-2-21 20:13:23

isdkz 发表于 2023-2-21 19:59
因为 pygame 使用了单例模式,也就是窗口只会被实例化一次,可以使用多进程解决,多线程不行

就是开很多个程序?

isdkz 发表于 2023-2-21 20:23:18

本帖最后由 isdkz 于 2023-2-21 20:26 编辑

歌者文明清理员 发表于 2023-2-21 20:13
就是开很多个程序?

参考代码:

import pygame
from multiprocessing import Process

def test():
    screen = pygame.display.set_mode((400,400))
    while True:
      for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
      pygame.display.flip()

if __name__ == '__main__':
    p_lst =
    for i in p_lst:
      i.start()

歌者文明清理员 发表于 2023-2-21 20:47:44

isdkz 发表于 2023-2-21 20:23
参考代码:

不对,这样主循环似乎不会退出
应该这样
try:
    while True:
      for event in pygame.event.get():
            if event.type == pygame.QUIT:
                raise
      pygame.display.flip()
except:
    pygame.quit()

isdkz 发表于 2023-2-21 20:51:31

歌者文明清理员 发表于 2023-2-21 20:47
不对,这样主循环似乎不会退出
应该这样

主循环不会退出啥意思?

歌者文明清理员 发表于 2023-2-21 20:53:07

isdkz 发表于 2023-2-21 20:51
主循环不会退出啥意思?

虽然窗口关闭了,可 while True 循环没退出

liuhongrun2022 发表于 2023-2-21 20:58:49

问题回答:
90% isdkz
10% 别人

isdkz 发表于 2023-2-21 20:59:52

歌者文明清理员 发表于 2023-2-21 20:53
虽然窗口关闭了,可 while True 循环没退出

我不是很懂 pygame,所以不明白你说的 while True 循环没退出什么意思,不过按照代码规范来说 try... except... 不应该随便用

这里我建议可以用 sys.exit

import pygame
from multiprocessing import Process
import sys
import os

def test():
    screen = pygame.display.set_mode((400,400))
    while True:
      for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            print('test')
      pygame.display.flip()


if __name__ == '__main__':
    p_lst =
    for i in p_lst:
      i.start()

歌者文明清理员 发表于 2023-2-21 21:27:20

isdkz 发表于 2023-2-21 20:59
我不是很懂 pygame,所以不明白你说的 while True 循环没退出什么意思,不过按照代码规范来说 try... exc ...

平时我不写 try except 的,running = True while running: for event ... 敲得已经很 6 了
sys.exit() 确实是一种方法,目前网上的 pygame 教程大多数都是 sys.exit() 的

歌者文明清理员 发表于 2023-3-5 07:30:54

liuhongrun2022 发表于 2023-2-21 20:58
问题回答:
90% isdkz
10% 别人

没有吧,isdkz 是 99.999,刚看到几个新人的贴 isdkz 秒回结果被新人称之为“大神”
确实如此,我第一个贴也是他帮的

liuhongrun2022 发表于 2023-3-5 07:31:53

歌者文明清理员 发表于 2023-3-5 07:30
没有吧,isdkz 是 99.999,刚看到几个新人的贴 isdkz 秒回结果被新人称之为“大神”
确实如此,我第一个 ...

是的
昨天一天没上线

歌者文明清理员 发表于 2023-3-5 07:32:37

liuhongrun2022 发表于 2023-3-5 07:31
是的
昨天一天没上线

总得签个到吧
我有一次半夜才上线,没想到消息都堆满了(20),真…

liuhongrun2022 发表于 2023-3-5 07:34:10

歌者文明清理员 发表于 2023-3-5 07:32
总得签个到吧
我有一次半夜才上线,没想到消息都堆满了(20),真…

我倒没你火,顶多八九条消息

歌者文明清理员 发表于 2023-3-5 07:35:40

liuhongrun2022 发表于 2023-3-5 07:34
我倒没你火,顶多八九条消息

我也不知道为什么每次我一发就有人评分,且很多人回复
奇怪这么支持我吗

我开了个小号 三体文明监听员 ,但是无法接受邮箱,你知道怎么弄吗

liuhongrun2022 发表于 2023-3-5 07:37:02

歌者文明清理员 发表于 2023-3-5 07:35
我也不知道为什么每次我一发就有人评分,且很多人回复
奇怪这么支持我吗



你用的什么邮箱?
我的小号lhr123用的163邮箱啥问题没有

歌者文明清理员 发表于 2023-3-5 07:38:57

liuhongrun2022 发表于 2023-3-5 07:37
你用的什么邮箱?
我的小号lhr123用的163邮箱啥问题没有

163啥的要手机号
hotmail微软一直提示我需要家长许可…

歌者文明清理员 发表于 2023-3-5 07:41:42

liuhongrun2022 发表于 2023-3-5 07:37
你用的什么邮箱?
我的小号lhr123用的163邮箱啥问题没有

但是没人注意到我昨天发的帖子…

liuhongrun2022 发表于 2023-3-5 07:43:02

歌者文明清理员 发表于 2023-3-5 07:38
163啥的要手机号
hotmail微软一直提示我需要家长许可…

哈哈,家长许可
@学习编程中的Ben 要注册github账号,用的Hotmail邮箱,也要家长许可,他最后用的我的邮箱当做家长
但是发现了一堆问题
如果你的浏览器上登录了这个账号,就会发现其他网址访问不了,非得说“需要你的家长同意”
最后我要从家庭里把他删除,然后他就说
"出错了,请重试。"
真的是服了

歌者文明清理员 发表于 2023-3-5 08:16:39

liuhongrun2022 发表于 2023-3-5 07:43
哈哈,家长许可
@学习编程中的Ben 要注册github账号,用的Hotmail邮箱,也要家长许可,他最后用的我的邮 ...

早知道换个出生日期…
页: [1] 2
查看完整版本: pygame多窗口