Python 如何将焦点更改为pygame窗口?

Python 如何将焦点更改为pygame窗口?,python,pygame,focus,Python,Pygame,Focus,我正在尝试用pygame制作一个游戏,在游戏结束时,弹出一条tkinter消息,显示一个游戏覆盖消息和一个再次玩的选项 当我按下“再次播放”按钮时,当按下该键时,播放器精灵根本不会移动 然后我发现它发生了,因为在我按下消息框按钮后,它没有将焦点切换到活动的pygame窗口 如果有人能告诉我如何更改焦距窗口,那将很有帮助。如果您使用Windows,您可以使用该模块,尤其是该方法 例如,下面的程序受page的启发,创建了一个tkinter窗口和一个pygame窗口,并将它们交替地放在前面 #----

我正在尝试用
pygame
制作一个游戏,在游戏结束时,弹出一条
tkinter
消息,显示一个游戏覆盖消息和一个再次玩的选项

当我按下“再次播放”按钮时,当按下该键时,播放器精灵根本不会移动

然后我发现它发生了,因为在我按下消息框按钮后,它没有将焦点切换到活动的
pygame
窗口


如果有人能告诉我如何更改焦距窗口,那将很有帮助。

如果您使用Windows,您可以使用该模块,尤其是该方法

例如,下面的程序受page的启发,创建了一个
tkinter
窗口和一个
pygame
窗口,并将它们交替地放在前面

#-------------------------------
#初始化front()函数
导入win32gui
def windowEnumerationHandler(hwnd,windows):
append((hwnd,win32gui.GetWindowText(hwnd)))
结果=[]
windows=[]
win32gui.EnumWindows(windowEnumerationHandler,windows)
def前端(win_名称):
对于windows中的i:
如果i[1]==win\u name:
win32gui.ShowWindow(i[0],5)
win32gui.SetForegroundWindow(i[0])
打破
# ------------------------
#创建pygame窗口
导入pygame
类PygameWindow:
定义初始化(self,name):
self.name=名称
self.window=pygame.display.set_模式((640480))
pygame.display.set_标题(self.name)
def至_前部(自身):
前面(自我名称)
pygame\u window=PygameWindow('这是pygame窗口')
# -------------------------
#创建tkinter窗口
进口tkinter
类TkinterWindow:
定义初始化(self,name):
self.name=名称
self.window=tkinter.Tk()
self.window.title(self.name)
def至_前部(自身):
前面(自我名称)
tkinter_window=TkinterWindow('这是tkinter window')
# ------------------------------------------
#主循环-在两个窗口之间切换
从时间上导入睡眠
尽管如此:
睡眠(1)
pygame_window.到_front()
睡眠(1)
tkinter_window.to_front()
#更新tkinter窗口,使其保持可见
tkinter_window.window.update()

如果使用Windows,则可以使用该模块,尤其是该方法

例如,下面的程序受page的启发,创建了一个
tkinter
窗口和一个
pygame
窗口,并将它们交替地放在前面

#-------------------------------
#初始化front()函数
导入win32gui
def windowEnumerationHandler(hwnd,windows):
append((hwnd,win32gui.GetWindowText(hwnd)))
结果=[]
windows=[]
win32gui.EnumWindows(windowEnumerationHandler,windows)
def前端(win_名称):
对于windows中的i:
如果i[1]==win\u name:
win32gui.ShowWindow(i[0],5)
win32gui.SetForegroundWindow(i[0])
打破
# ------------------------
#创建pygame窗口
导入pygame
类PygameWindow:
定义初始化(self,name):
self.name=名称
self.window=pygame.display.set_模式((640480))
pygame.display.set_标题(self.name)
def至_前部(自身):
前面(自我名称)
pygame\u window=PygameWindow('这是pygame窗口')
# -------------------------
#创建tkinter窗口
进口tkinter
类TkinterWindow:
定义初始化(self,name):
self.name=名称
self.window=tkinter.Tk()
self.window.title(self.name)
def至_前部(自身):
前面(自我名称)
tkinter_window=TkinterWindow('这是tkinter window')
# ------------------------------------------
#主循环-在两个窗口之间切换
从时间上导入睡眠
尽管如此:
睡眠(1)
pygame_window.到_front()
睡眠(1)
tkinter_window.to_front()
#更新tkinter窗口,使其保持可见
tkinter_window.window.update()

如果您试图在屏幕上创建游戏,我建议您在pygame循环的同一窗口中创建游戏,而不要使用tkinter创建单独的窗口您是否导入带有
消息框的外部python脚本并显示它,或者你是在你的
pygame
脚本中制作的,关于这一点也有很多问题,看看这些问题,确保在tkinter中调用
root.quit()
,退出循环。消息框关闭后的焦点在哪里?@Mike67它将焦点重新聚焦到我的文本编辑器Sublime上Text@CoolCloud我将看到这一点并再次尝试如果您试图在屏幕上创建游戏,我建议您在pygame循环的同一窗口中创建,不使用tkinter创建一个单独的窗口您是导入一个带有
messagebox
的外部python脚本并显示它,还是在您的
pygame
脚本中创建它,而且还有很多问题,因此,请查看这些问题,确保调用
root.quit()
在tkinter中退出循环。消息框关闭后的焦点在哪里?@Mike67它将焦点重新聚焦到我的文本编辑器Sublime上Text@CoolCloud我会看到的,然后再试一次