2016-04-27 4 views
-1

私はPythonでかなり新しく、私は大学の同僚と簡単なパズルプロジェクトをしています。プログラムを更新し、タイマー&リセットボタンを追加します。Python - 与えられた時間の後にプログラムを終了するカウントダウンタイマー

タイマーのアイデアは、X分のカウントダウンを行い、終了/終了ボタンでメッセージを表示するか、メインアプリを終了することです。 リセットボタンは、アプリウィンドウのどこかに配置してゲームをリセットすることができます。

プログラムでは、ここで見つけることができます:任意の助けhttp://pastebin.com/79zRqhnH

感謝を。

A.

+0

本文に関連コードセクションを掲載してください。 時間枠内でプログラムを終了する限り、必要に応じて頻繁に繰り返す繰り返しループがある場合、条件(time.time()が値より小さいなど)を一度終了するだけで、は壊れてます。ループを持たない関数を終了する必要がある場合は、組み込みライブラリの 'threading'モジュールを参照する必要があります。 –

答えて

0

だけでいくつかの提案は、まず、しかし、私はまた、コードの専門家ではないに注意してください。

私はあなたがカメをインポートすることを示唆している、と私はメモリと、コードの面でそれそのも良くかなり確信しているが、(後でだけでも、読みやすさのために、特定の機能のために必要としてたときにturtle.FUNCTIONNAMEを呼ぶだろう実行時にすべての関数を一度にインポートしないようにしてください。これはFROM libraryname import *に電話すると起こります。

MAINファンクションで変数を初期化することもできます。可読性と組織性のために、グローバル変数ではなく、MAINに初期化されていないグローバル変数をこのファイルにインポートすることもできます。妨げになる。

また、あなたのコードを関数で編成しておきましょう。現在の例では、呼び出されたカメ関数は、新しい関数の中にそれらをすべてラップしてその関数を一度呼び出すことができる代わりに。

最後に、プログラムの最後にあるturtle.exitonclick()コールを必ず削除してください。

import tkMessageBox 
import turtle 
def main() : 
    turtle.onscreenclick(getPos) 
    SetTimer() #call for the function to setup the timer, you can call this function when certain conditions are met rather than at startup. 
    mainloop() 

def SetTimer(): 
    canvas = turtle.getcanvas() #get current turtle canvas to set the after call on. 
    canvas.after(2000, CalledAfter2000ms, canvas) #first parameter specifies time in miliseconds to wait before the call to CalledAfter2000ms function which is in the second paramater, the third paramater here is the paramater im passing to the CalledAfter2000ms function. 

def CalledAfter2000ms(canvas): #function passed to canvas.after(...) 
    if tkMessageBox.askyesno("EXIT","Do you really want to exit?"): #if yes is pressed, True is returned, if no is pressed then False is returned. 
     turtle.bye() #exits the application 
関連する問題