Skip to main content
 首页 » 编程设计

python之我无法将我的 pygame 游戏链接到我的 tkinter GUI

2025年05月04日27mq0036

基本上我已经为我的游戏创建了一个 pygame 菜单,当我点击它们时它会加载所有其他 pygame 窗口,但是对于添加用户等某些方面,我是在 Tkinter GUI 中创建的。当我点击将它们加载到我的 pygame 上时,它不会加载 Tkinter GUI,有谁知道我该如何解决这个问题,或者我是否需要添加一些东西才能让它工作。

它的行为就好像它要加载一些东西但没有加载,第一个称为“mathsvaders”的加载很好,因为它是一个 pygame 程序,但高分在 tkinter 中并且没有加载:

pos = 1 
while True: 
# events 
for e in pygame.event.get(): 
    if e.type == pygame.QUIT: 
        pygame.quit() 
        sys.exit() 
    elif e.type == pygame.KEYDOWN: 
        if e.key == pygame.K_DOWN: 
            pos += 1 
            if pos > 5: 
                pos = 1 
        elif e.key == pygame.K_UP: 
            pos -= 1 
            if pos < 1: 
                pos = 5 
        elif e.key == pygame.K_RETURN: 
            if pos == 1: 
                import MathsvadersReal 
            elif e.key == pygame.K_RETURN: 
             if pos == 2: 
                import Highscore 
            elif pos == 5: 
             pygame.quit() 
             sys.exit() 

表单代码如下:

import Tkinter import Databaseconnector 
 
 class simpleapp_tk(Tkinter.Tk): 
    def __init__(self,parent): 
        Tkinter.Tk.__init__(self,parent)  
        self.parent = parent 
        self.initialize() 
 
    def initialize(self): 
      def create_widgets(self): 
        # create welcome label 
        label1 = Tkinter.Label(self, text = "Hello world") 
        label1.grid(row = 0, column = 2, columnspan = 4, sticky = 'E') 
 
if __name__ == "__main__": 
    app = simpleapp_tk(None) 
    app.title('my application') 
    app.geometry("250x200") 
    app.mainloop()                               

请您参考如下方法:

当你想加载高分时,你的主代码导入了 Highscore 模块,这有两个问题:

  1. 在Highscore模块中,__name__不等于"__main__"。它等于 “Highscore”。因此,永远不会创建 simpleapp_tk 应用程序,也永远不会调用它的 mainloop 方法。 这可能是您遇到的问题,但它不是此代码的唯一问题。

  2. import 语句将其结果缓存在 sys.modules 中,因此这段代码只能运行一次。要重新加载模块,您必须通过调用 reload(Highscore) 或 del sys.modules["Highscore"]