2

基本的に、ゲーム用のpygameメニューを作成しました。クリックすると、他のすべてのpygameウィンドウが読み込まれますが、ユーザーの追加などのいくつかの側面では、TkinterGUIで作成しました。クリックして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()                              
4

2 に答える 2

0

Highscoreハイスコ​​アをロードする場合、メイン コードはモジュールをインポートしますが、これには次の 2 つの問題があります。

  1. Highscoreモジュールでは、__name__は と等しくありません"__main__"。に等しい"Highscore"です。このため、simpleapp_tkアプリが作成されることはなく、そのmainloopメソッドが呼び出されることもありません。これがおそらく発生している問題ですが、このコードの問題はこれだけではありません。

  2. ステートメントはimport結果を にキャッシュするsys.modulesため、このコードは 1 回しか機能しません。モジュールをリロードするには、reload(Highscore)またはを呼び出して、明示的に行う必要があります。del sys.modules["Highscore"]

于 2014-07-18T16:25:04.473 に答える