2013-03-02 76 views
2

基本上我爲我的遊戲創建了一個pygame菜單,當我點擊它們時它會加載所有其他pygame窗口,但是對於某些方面,如添加用戶等等,我在Tkinter GUI中創建。當我點擊將它們加載到我的pygame上時,它不會加載Tkinter GUI,沒有人知道我可以如何解決這個問題,或者如果有什麼我需要添加來使其工作。我不能將我的pyame遊戲鏈接到我的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()        
+2

只是一個提示,如果你想人民幫助您應該顯示的代碼示例。 – kyrias 2013-03-02 17:29:44

+0

它的行爲就好像它將加載一些東西,但沒有,第一個叫做「mathsvaders」的作爲pygame程序加載得很好,但高分在tkinter中並且不加載: – 2013-03-03 12:48:57

+0

對不起,它的意思是說pos == 2,但即使如此它也不起作用。 – 2013-03-03 21:29:41

回答

0

你的主要代碼導入Highscore模塊時要加載的高分,其中有兩個問題:

  1. Highscore模塊中,__name__不等於"__main__"。它等於"Highscore"。 Bescaue,simpleapp_tk應用程序永遠不會被創建,它的mainloop方法永遠不會被調用。 這可能是您遇到的問題,但它不是此代碼的唯一問題。

  2. import聲明將結果緩存在sys.modules中,所以此代碼只能使用一次。要重新加載模塊,你必須明確地這樣做,無論是通過調用reload(Highscore)del sys.modules["Highscore"]