2016-07-07 8 views
2

コードが不足していることがわかります。すべてのゲームがメニューから呼び出されます。それは長くて、私の質問には必要ないので、私はそれを削除しました。私の問題は特定の機能、display_dataでのみです。私がメニューから呼び出すと、matplotが新しいウィンドウで開き、ただちにクラッシュします。私はちょうどテストのための基本的なプロットを設定しました。何か案は?matplotプログラムは実行時に応答しないウィンドウを表示します

import matplotlib.pyplot as plt 

def display_data(): 
    plt.plot([1,2,4],[2,7,9]) 
    plt.show() 

# (6) Save Progress ------------------------------------------------------------ 

# (7) Load Data ---------------------------------------------------------------- 

# (8) Quit Game ---------------------------------------------------------------- 

def quit_game(): 
    print('\nThank you for playing!') 

# Main Menu -------------------------------------------------------------------- 

def menu(): 
    calculation_game = print("\nEnter 1 to play 'Calculation'") 
    bin_reader = print("Enter 2 to play 'Binary Reader'") 
    trifacto = print("Enter 3 to play 'Trifacto'") 
    statistics = print("Enter 4 to view your statistics") 
    display_data = print("Enter 5 to display data") 
    save_game = print("Enter 6 to save your progress") 
    load_data = print("Enter 7 to load data") 
    quit_game = print("Enter 8 to quit the game") 

def main_menu(): 
    print('Welcome to BrainAge!') 
    main_record = [] 
    user_input = '' 
    while user_input != '8': 
     menu() 
     user_input = input('\nWhat would you like to do? ') 
     if user_input == '1': 
      calculation_game() 
     if user_input == '2': 
      binary_reader_game() 
     if user_input == '3': 
      trifacto_game() 
     if user_input == '4': 
      display_statistics() 
     if user_input == '5': 
      display_data() 
     if user_input == '8': 
      quit_game() 

main_menu() 
+0

クラッシュするか、ただちに終了しますか?クラッシュした場合は、エラーメッセージを表示します。終了した場合は、すでに回答済みの質問を参照してください。 – Julien

+0

Matplotウィンドウを開くだけで、白いままですぐに反応しなくなります。エラーメッセージもなく、ちょっとしたクラッシュです。 –

+0

matplotlibがクラッシュすると思いますか?私にとっては*クラッシュしますが、バックエンドについては誤りがあります。このような場合は、インポートの前に、 'import matplotlib'と' matplotlib.use( 'Qt4Agg')またはそれに類似するものを追加してみてください。その変更を加えれば、プロットは必要に応じて表示されます。また、なぜ 'menu()'関数でこれらのローカル変数を 'None'にも定義していますか? –

答えて

5

私はしばらく前に同様の問題があった、docsによれば、これは、インタラクティブでmatplotlib.pyplotを実行することによって発生するブロッキング動作をオーバーライド

plt.show(block=True) 

にこのライン

plt.show() 

を設定してみてくださいこれは、一部の環境で問題を引き起こすことが知られています。私はこれがmatplotlibの最新バージョンでのみ動作すると信じています。

+1

うわー、素晴らしい!私はそのトリックをしたと思う。 –

+0

実際のプロットを設定したら更新します。ありがとうございました –

+0

もう一度ありがとうございます。それは今よく見える。 –

関連する問題