ブログ

割とコンピュータよりの情報をお届けします。

2018年9月16日

Pythonで一定間隔で実行5

Pythonで一定間隔で処理を実行する例を作成していたが,今回はQt5を使用した場合の例に踏み込んだ。(最初の記事からだいぶん時間がたって忘れていたがJavaScriptのsetIntervalみたいな処理がしたかったのだ。今回は形が違うが,setIntervalなる関数も出てきて気分はsetIntervalの処理のようになる)

WinPythonではQt5が同梱されたバージョンが用意されている。
今回はそれを利用した。

今回のサンプルコードは以下のようになる。

import sys
from PyQt5.QtWidgets import  *
from PyQt5.QtCore import QTimer
from datetime import datetime

def main():
    app = QApplication(sys.argv)
    t1 = QTimer()
    t1.setInterval(1000)
    t1.timeout.connect(TimerTest)
    t1.start()
    sys.exit(app.exec_())

def TimerTest():
    print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))

if __name__ == '__main__':
    main()

このコードの実行にはPyQt5が必要でWinPythonなら同梱されているが,他の環境ではインストールが必要である。
このタイマーの使い勝手は悪くないし,マニュアルも豊富であるがQt5のライセンス関係には注意が必要。

≫ 続きを読む

2018/09/16 コンピュータ   TakeMe
タグ:Python

Pythonで一定間隔で実行4

Pythonで一定間隔で処理を実行する例をもう一つ見つけた。
ただし,.NETが使用できる場合には.NETのTimerの方がよいと思う。
今度はwxWidgetが使用できる場合の例

まず,pip install wxpythonをインストールする。

そしてサンプルコード

import wx
from datetime import datetime
from time import sleep

class TestApp(wx.App):
    def TimerStart(self):
        self.t1 = wx.Timer(self)
        self.t1.Start(1000)

    def TimerStop(self):
        self.t1.Stop()
        print('end')
        del self.t1

    def TimerTest(self, event):
        print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
        
    def OnInit(self):
        self.Bind(wx.EVT_TIMER, self.TimerTest)
        self.TimerStart()
        return True

app = TestApp()
app.MainLoop()

ただし,タイマーの止め方はわからない。IDLEなどを使用していると,タイマーが止まらず回りっぱなしになってしまう。

≫ 続きを読む

2018/09/16 コンピュータ   TakeMe
タグ:Python