Python Pysideで、PyQtGraphを使用する際は、importする順番に注意

#とりあえずこれをim.pyとして保存し、実行する。
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%"><span style="color: #008000; font-weight: bold">from</span> <span style="color: #0000FF; font-weight: bold">PySide</span> <span style="color: #008000; font-weight: bold">import</span> QtCore, QtGui
<span style="color: #008000; font-weight: bold">import</span> <span style="color: #0000FF; font-weight: bold">pyqtgraph</span> <span style="color: #008000; font-weight: bold">as</span> <span style="color: #0000FF; font-weight: bold">pg</span>

<span style="color: #008000; font-weight: bold">class</span> <span style="color: #0000FF; font-weight: bold">Ui_MainWindow</span>(<span style="color: #008000">object</span>):
    <span style="color: #008000; font-weight: bold">def</span> <span style="color: #0000FF">setupUi</span>(<span style="color: #008000">self</span>, MainWindow):
        MainWindow<span style="color: #666666">.</span>setObjectName(<span style="color: #BA2121">&quot;MainWindow&quot;</span>)
        <span style="color: #008000">self</span><span style="color: #666666">.</span>centralwidget <span style="color: #666666">=</span> QtGui<span style="color: #666666">.</span>QWidget(MainWindow)
        <span style="color: #008000">self</span><span style="color: #666666">.</span>centralwidget<span style="color: #666666">.</span>setObjectName(<span style="color: #BA2121">&quot;centralwidget&quot;</span>)
        MainWindow<span style="color: #666666">.</span>setCentralWidget(<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> 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">&quot;verticalLayout&quot;</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">&quot;graph01&quot;</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">&quot;psbtn&quot;</span>)
        <span style="color: #008000">self</span><span style="color: #666666">.</span>psbtn<span style="color: #666666">.</span>setText(<span style="color: #BA2121">&quot;Plot&quot;</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">&quot;clicked()&quot;</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)
        

<span style="color: #008000; font-weight: bold">import</span> <span style="color: #0000FF; font-weight: bold">sys</span>
<span style="color: #008000; font-weight: bold">import</span> <span style="color: #0000FF; font-weight: bold">numpy</span> <span style="color: #008000; font-weight: bold">as</span> <span style="color: #0000FF; font-weight: bold">np</span>

pg<span style="color: #666666">.</span>setConfigOption(<span style="color: #BA2121">&#39;foreground&#39;</span>, <span style="color: #BA2121">&#39;k&#39;</span>)
pg<span style="color: #666666">.</span>setConfigOption(<span style="color: #BA2121">&#39;background&#39;</span>, <span style="color: #BA2121">&#39;w&#39;</span>)


<span style="color: #008000; font-weight: bold">class</span> <span style="color: #0000FF; font-weight: bold">ControlMainWindow</span>(QtGui<span style="color: #666666">.</span>QMainWindow):
    <span style="color: #008000; font-weight: bold">def</span> <span style="color: #0000FF">__init__</span>(<span style="color: #008000">self</span>, parent<span style="color: #666666">=</span><span style="color: #008000">None</span>):
        <span style="color: #008000">super</span>(ControlMainWindow, <span style="color: #008000">self</span>)<span style="color: #666666">.</span>__init__(parent)
        <span style="color: #008000">self</span><span style="color: #666666">.</span>ui <span style="color: #666666">=</span> Ui_MainWindow()
        <span style="color: #008000">self</span><span style="color: #666666">.</span>ui<span style="color: #666666">.</span>setupUi(<span style="color: #008000">self</span>)

<span style="color: #008000; font-weight: bold">if</span> __name__ <span style="color: #666666">==</span> <span style="color: #BA2121">&quot;__main__&quot;</span>:
    app <span style="color: #666666">=</span> QtGui<span style="color: #666666">.</span>QApplication(sys<span style="color: #666666">.</span>argv)
    mySW <span style="color: #666666">=</span> ControlMainWindow()<span style="color: #408080; font-style: italic">#class no instance-ka</span>
    mySW<span style="color: #666666">.</span>show()
    sys<span style="color: #666666">.</span>exit(app<span style="color: #666666">.</span>exec_())
</pre></div>
#こうなる
![Screenshot from 2016-08-22 11-11-38.png](https://qiita-image-store.s3.amazonaws.com/0/137888/66fe06fe-68a7-5148-c19e-9caa14c9ac99.png)


#最初の二行を入れ替えると
つまりこの順番だと
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%"><span style="color: #008000; font-weight: bold">import</span> <span style="color: #0000FF; font-weight: bold">pyqtgraph</span> <span style="color: #008000; font-weight: bold">as</span> <span style="color: #0000FF; font-weight: bold">pg</span>
<span style="color: #008000; font-weight: bold">from</span> <span style="color: #0000FF; font-weight: bold">PySide</span> <span style="color: #008000; font-weight: bold">import</span> QtCore, QtGui
</pre></div>
エラー起きる。
TypeError: arguments did not match any overloaded call:
  QGraphicsView(QWidget parent=None): argument 1 has unexpected type 'PySide.QtGui.QWidget'
  QGraphicsView(QGraphicsScene, QWidget parent=None): argument 1 has unexpected type 'PySide.QtGui.QWidget'

#理由はここに書いてありました
http://www.pyqtgraph.org/documentation/how_to_use.html#pyqt-and-pyside
多分訳になっているはず。
>PyQt と PySide

>PyQtGraphは、二つのポピュラーなQTライブラリ用のPythonラッパー、PyQtと、PySideをサポートしています。
>両パッケージ共に、ほとんど同一のAPI、関数を提供していますが、様々な理由から、どちらか一方を選んで使用すると思います。
>pyqtgraphが最初にimportされたとき、pyqtgraphは、次のチェック項目により、どちらのライブラリを使用するかを自動的に決定します。
>
>１ もし、PyQt4が既にimportされているなら、それを使い、
>２ そうでなければ、PySideが既にimportされていれば、それを使い、
>３ そうでなければ、PyQt4のimportを試みようとし、
>４ もし、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'が入ってきた。
引数１は想定外の型'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件）