2016-11-08 3 views
0

グラフィックスウィンドウで時間(秒)をどのように印刷することができるのだろうかと思っていました。私はストップウォッチをしようとしていますが、ストップウォッチPNGをウィンドウに表示していますが、特定のエリアのウィンドウに時間を表示するにはどうすればいいですか?
また、実際のストップウォッチ(hh:mm:ss)のように時間をフォーマットする方法はありますか?60秒後に1分追加しますか?Zelleのグラフィックウィンドウで時間(秒)を印刷するにはどうしたらいいですか?

from graphics import * 
import time 

def main(): 
    win = GraphWin('Stopwatch', 600, 600) 
    win.yUp() 

    #Assigning images 
    stopWatchImage = Image(Point (300, 300), "stopwatch.png") 
    startImage = Image(Point (210, 170), "startbutton.png") 
    stopImage = Image(Point (390, 170), "stopbutton.png") 
    lapImage = Image(Point (300, 110), "lapbutton.png") 

    #Drawing images 
    stopWatchImage.draw(win) 
    startImage.draw(win) 
    stopImage.draw(win) 
    lapImage.draw(win) 

main() 
+0

ウィンドウ関連のライブラリが必要です。 g。 pygtk ;-) – Alfe

+0

申し訳ありません私は新しいです、私はかなり理解していません。 – Sammy

+0

あなたが新しい人ならば、「リアルタイムで」時間を増やすストップウォッチはお勧めしません...それはスレッドを知る必要があり、秒の間隔でウィンドウに再描画する方法です –

答えて

0

ことが可能であったならば、あなたは次のことを試みることができるが、あなたが実行している時にこのエラーがわかります...

RuntimeError: main thread is not in main loop

(ZelleグラフィックスはTkinterの単なるラッパーである)

すべてのグラフィックスをコメントアウトすると、毎秒プリントステートメントが増えます。

from graphics import * 
import datetime 
from threading import Thread 
import time 

class StopWatch: 
    def __init__(self): 
     self.timestamp = datetime.time(hour = 0, minute = 0, second = 0) 

    def __str__(self): 
     return datetime.time.strftime(self.timestamp, '%H:%M:%S') 

    def increment(self, hours=0, minutes=0, seconds=1): 
     dummy_date = datetime.date(1, 1, 1) 
     full_datetime = datetime.datetime.combine(dummy_date, self.timestamp) 
     full_datetime += datetime.timedelta(seconds=seconds, hours=hours, minutes=minutes) 
     self.timestamp = full_datetime.time() 


def main(): 
    win = GraphWin('Stopwatch', 600, 600) 
    watch = StopWatch() 

    timer_text = Text(Point(200, 200), str(watch)) 
    timer_text.draw(win) 

    def updateWatch(): 
     while True: 
      time.sleep(1) 
      watch.increment() 
      print(str(watch)) 
      timer_text.setText(str(watch)) 

    t1 = Thread(target=updateWatch) 
    t1.setDaemon(True) 
    t1.start() 
    t1.join() 

    win.getMouse() 


if __name__ == "__main__": 
    main() 
+0

ありがとうございます、そうです、それは不可能です。 @ cricket_007 – Sammy

+0

Zelle Graphicsではなく、おそらく別のPython Graphicsライブラリを使って、わかります。 –

+0

こんにちは@ cricket_007、私はそれをtime.sleep(1)とZellesグラフィックスのテキストで動作させることができました。助けてくれてありがとう。 – Sammy

関連する問題