我无法将我的pyame游戏链接到我的tkinter GUI

时间:2013-03-02 17:25:42

标签: python user-interface tkinter pygame

基本上我已经为我的游戏创建了一个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()                              

1 个答案:

答案 0 :(得分:0)

当您要加载高分时,您的主代码会导入Highscore模块,这会产生两个问题:

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

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

  3. 明确地执行此操作