2

using でタイム カウンターを実行し、この時間pythonを usingで表示しようとしています。この時間の形式を使用して、プログラムが動作し始めてから経過した時間を示すために、これを行う必要があります。のドキュメントを読んで、インターネットで検索した別のコードを試しましたが、うまくいきません。QTimeQLabelPyQt00:00:00QTime

これは私のコードの一部です:

class MyApplication(QtGui.QApplication):
  def __init__(self, *args, **kwargs):
    super(MyApplication, self).__init__(*args, **kwargs)

    self.t = QTime()                      #I start QTime at the same time
    self.t.start()                        # the program starts.

    self.label_1 = QtGui.QLabel("Time since the program started:")

    self.time_label = QtGui.QLabel("00:00:00")

    self.tmr = QTimer()                   #I use QTimer because I need it 
                                          #for another part of the code
    self.tmr.timeout.connect(self.clock)

  def clock(self):
    self.m = 0
    self.elapsed = self.t.elapsed()

    self.s = int((self.elapsed)/1000)
    if self.s == 60:
        self.m += 1
        self.s = 0 

    self.time_sec = str(self.s)
    self.time_min = str(self.m)
    self.time = self.time_min + ":" + self.time_sec

    self.time_label.setText(self.time)     #I show the time in this QLabel()

これをビルドすると、この形式の時間: が得られ0:0、60 秒後 (秒が表示されます)、この結果: が得られ1:0ます。他には何も起こりません。

この形式で必要な時間カウンターを作成するにはどうすればよいですか: 00:00:00. を使用して実行できますQTimerか? あなたが私を助けてくれることを願っています。

- - - 編集 - - -

@amicitas と @linusg の回答のおかげで、datetimeモジュールを試して、次の簡単なコードを書きました。

class MyApplication(QtGui.QApplication):
  def __init__(self, *args, **kwargs):
    super(MyApplication, self).__init__(*args, **kwargs)

    self.t0 = datetime.now()

    self.tmr = QTimer()                   
    self.tmr.timeout.connect(self.clock)


  def.clock(self):
    self.t1 = datetime.now()

    self.hour = self.t1.hour - self.t0.hour
    self.minute = self.t1.minute - self.t0.minute
    self.second = self.t1.second - self.t0.second

    print self.hour, self.minute, self.second

でも、これを作ってみると、カウンターが45秒になった瞬間、45から-15になって「1分」と表示されます。これは:

に達する0:0:44と に変わり0:1:-15ます。

何が問題なのですか?また、必要な時間形式を表示するにはどうすればよいですか? これは00:00:00。あなたが私を助けてくれることを願っています。

4

2 に答える 2

3

私はあなたのために次のコードを書いてテストしました:

from datetime import datetime
import time

if __name__== '__main__':

    initTimeObj = datetime.now()
    nullRef = datetime(initTimeObj.year, initTimeObj.month, initTimeObj.day, 0, 0, 0)

    print("Initial time:")
    print(str(initTimeObj.hour) + ':' + str(initTimeObj.minute) + ':' + str(initTimeObj.second))
    print("")


    while(True):
        time.sleep(1)
        myDiff = datetime.now() - initTimeObj
        myTimeObj = nullRef + myDiff

        print(str(myTimeObj.hour) + ':' + str(myTimeObj.minute) + ':' + str(myTimeObj.second))

        # Now you get a counting as follows:
        # 0:0:1
        # 0:0:2
        # 0:0:3
        # ...
        # 0:0:59
        # 0:1:0
        # 0:1:1
        # 0:1:2
        # ...

このコードはまさに必要なことを行います。からカウントを開始し、カウント0:0:0を続けます。00:00:00. _ ご希望があれば、さらに詳しく調べます。

これがお役に立てば幸いです。それがあなたのために働いたかどうか私に知らせてください。

于 2016-05-16T10:08:49.327 に答える