#とりあえずこれをim.pyとして保存し、実行する。
from PySide import QtCore, QtGui
import pyqtgraph as pg
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
MainWindow.setCentralWidget(self.centralwidget)
<span style="color: #008000">self</span><span style="color: #666666">.</span>verticalLayout <span style="color: #666666">=</span> QtGui<span style="color: #666666">.</span>QVBoxLayout(<span style="color: #008000">self</span><span style="color: #666666">.</span>centralwidget)
<span style="color: #008000">self</span><span style="color: #666666">.</span>verticalLayout<span style="color: #666666">.</span>setObjectName(<span style="color: #BA2121">"verticalLayout"</span>)
<span style="color: #008000">self</span><span style="color: #666666">.</span>graph01 <span style="color: #666666">=</span> pg<span style="color: #666666">.</span>PlotWidget(<span style="color: #008000">self</span><span style="color: #666666">.</span>centralwidget)
<span style="color: #008000">self</span><span style="color: #666666">.</span>graph01<span style="color: #666666">.</span>setObjectName(<span style="color: #BA2121">"graph01"</span>)
<span style="color: #008000">self</span><span style="color: #666666">.</span>verticalLayout<span style="color: #666666">.</span>addWidget(<span style="color: #008000">self</span><span style="color: #666666">.</span>graph01)
<span style="color: #008000">self</span><span style="color: #666666">.</span>psbtn <span style="color: #666666">=</span> QtGui<span style="color: #666666">.</span>QPushButton(<span style="color: #008000">self</span><span style="color: #666666">.</span>centralwidget)
<span style="color: #008000">self</span><span style="color: #666666">.</span>psbtn<span style="color: #666666">.</span>setObjectName(<span style="color: #BA2121">"psbtn"</span>)
<span style="color: #008000">self</span><span style="color: #666666">.</span>psbtn<span style="color: #666666">.</span>setText(<span style="color: #BA2121">"Plot"</span>)
<span style="color: #008000">self</span><span style="color: #666666">.</span>verticalLayout<span style="color: #666666">.</span>addWidget(<span style="color: #008000">self</span><span style="color: #666666">.</span>psbtn)
QtCore<span style="color: #666666">.</span>QObject<span style="color: #666666">.</span>connect(<span style="color: #008000">self</span><span style="color: #666666">.</span>psbtn, QtCore<span style="color: #666666">.</span>SIGNAL(<span style="color: #BA2121">"clicked()"</span>), <span style="color: #008000">self</span><span style="color: #666666">.</span>plot)
<span style="color: #008000; font-weight: bold">def</span> <span style="color: #0000FF">plot</span>(<span style="color: #008000">self</span>):
frq <span style="color: #666666">=</span> <span style="color: #666666">10.0</span>
duration <span style="color: #666666">=</span> <span style="color: #666666">1.0</span>
samples <span style="color: #666666">=</span> <span style="color: #666666">1001</span>
x <span style="color: #666666">=</span> np<span style="color: #666666">.</span>linspace(<span style="color: #666666">0</span>, duration, samples)
rad <span style="color: #666666">=</span> np<span style="color: #666666">.</span>linspace(<span style="color: #666666">0</span>, <span style="color: #666666">2</span> <span style="color: #666666">*</span> np<span style="color: #666666">.</span>pi <span style="color: #666666">*</span> frq, samples)
y <span style="color: #666666">=</span> np<span style="color: #666666">.</span>sin(rad)
<span style="color: #008000">self</span><span style="color: #666666">.</span>graph01<span style="color: #666666">.</span>plot(x, y)
import sys
import numpy as np
pg.setConfigOption('foreground', 'k')
pg.setConfigOption('background', 'w')
class ControlMainWindow(QtGui.QMainWindow):
def init(self, parent=None):
super(ControlMainWindow, self).init(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
if name == "main":
app = QtGui.QApplication(sys.argv)
mySW = ControlMainWindow()#class no instance-ka
mySW.show()
sys.exit(app.exec_())
#こうなる
#最初の二行を入れ替えると
つまりこの順番だと
import pyqtgraph as pg
from PySide import QtCore, QtGui
#理由はここに書いてありました
http://www.pyqtgraph.org/documentation/how_to_use.html#pyqt-and-pyside
多分訳になっているはず。
PyQt と PySide
PyQtGraphは、二つのポピュラーなQTライブラリ用のPythonラッパー、PyQtと、PySideをサポートしています。
両パッケージ共に、ほとんど同一のAPI、関数を提供していますが、様々な理由から、どちらか一方を選んで使用すると思います。
pyqtgraphが最初にimportされたとき、pyqtgraphは、次のチェック項目により、どちらのライブラリを使用するかを自動的に決定します。1 もし、PyQt4が既にimportされているなら、それを使い、
2 そうでなければ、PySideが既にimportされていれば、それを使い、
3 そうでなければ、PyQt4のimportを試みようとし、
4 もし、PyQt4のimportが失敗したら、PySideのimportを試みます。もし、あなたのシステムに、PyQt4とPySideの両方のライブラリがインストールされていて、どちらか一方でpyqtgraphを使いたいのであれば、単純に、pyqtgraphをimportする前に、そのライブラリをimportするようにしてください。
import PySide ## this will force pyqtgraph to use PySide instead of PyQt4
import pyqtgraph as pg
先ほどのエラー、
argument 1 has unexpected type 'PySide.QtGui.QWidget'は、
self.graph01 = pg.PlotWidget(self.centralwidget)の行で、pyqtgraph.PlotWidgetは、引数にPyQtの何かを入れてもらうつもりだった
↓
'PySide.QtGui.QWidget'が入ってきた。
引数1は想定外の型'PySide.QtGui.QWidget'を持っています。
という状態だと思う。
#PyQtGraph
Pythonでプロットするための、ライブラリ。
http://www.pyqtgraph.org/
#Matplotlibじゃだめなの?
だめじゃない。
Matplotlibは、Pythonでプロットするためのスタンダードなライブラリ。
けどPyQtGraphの方が早い。
http://yukara-13.hatenablog.com/entry/2013/12/05/025655
#PySideとPyQt
PythonでQtを使って、GUIを作りたいなら、この二つから選ぶと思う。
ライセンスに、LGPLとGPLの違いがある。
PySide・・・LGPL。あまり使っている人がいないのか、ネット上に情報少ない気がする。(google検索すると、約 214,000 件)
PyQt・・・GPL。コピーレフト。ユーザーの数は検索結果に現れる気がする。(google検索 667,000件)