Python 3.8.2でPyQtGraphを使った場合のエラーを回避する
2020/04/28 categories:PyQtGraph| tags:Python|PyQtGraph|
Pythonでグラフを描いてみたくて、いつもPyQt5を使ってGUIを作っているということもあり、PyQtGraphを使ってグラフを描いてみました。
とりあえず実行してみる
PyQt5のQMainWindowにpyqtgparh.PlotWidget()を追加して表示してみると下記のようなエラーが出ました。
例外が発生しました: AttributeError
module 'time' has no attribute 'clock'
File "D:\Python\sample\pyqtgraph_Test\main.py", line 4, in <module>
import pyqtgraph as pg
timeモジュールにはclockはありませんよ、という例外のようです。4行目のimport pyqtgraphでエラーが発生しているのでpyqtgraph内でtime.clock()という関数を使っているのだろうと推測できます。
PyQtGraphのライブラリをPython3.8.2用に修正する
time.clock()が無いと言われたのでpyqtgraphのフォルダ内でtime.clockと検索してみました。
ptime.pyにsystime.clock()というコードが見つかりました。おそらくこのコードがエラーを吐いているコードでしょう。そこで、なぜtime.clock()が無いと言われるのかググってみるとpython3.3以降ではtime.clock()は廃止されたということがわかりました。
この関数time.clock()は、Python 3.3以降廃止された後、削除されました。要件に応じて、代わりにを使用するtime.perf_counter()かtime.process_time()、明確に定義された動作を実行してください
今回の環境はpython3.8.2なのでエラーを吐いていたのでしょう。どっちが良いかは調べていませんが、とりあえずtime.process_time()と書き換えてみました。
modified!!!と書いてライブラリのコードを修正しました。それで最初のコードを実行してみると無事に実行できました。
ソースコード
## -*- coding: utf-8 -*-
import sys
from PyQt5 import QtWidgets
import pyqtgraph as pg
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.centralwidget = QtWidgets.QWidget()
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.graph_widget = pg.PlotWidget(self)
self.setCentralWidget(self.graph_widget)
self.resize(600,600)
def main():
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
if __name__ == '__main__':
main()