PyQtを動かす@Snow Leopard

Maya2011がリリースされて勝手にQt熱が高まったので、ここは一つPyQt!と思ってあれこれ試してみましたが、とにかくまぁ面倒でしたPyQt。
やっとこさ動いたんですが、Qtのビルドから必要になってきます。

参考にしたのはこちら。
Snow LeopardでQt4.6+PyQt4を使えるようにしよう!(割と面倒だ)
参考というか、そのままなぞらさせて頂きました。ありがとうございます。

Qt自体はNokiaからコンパイル済みかつインストーラ付きのものを落としてこれるんですが、これがまずダメ。
これは32bit版なので、Snow Leopardの64bit環境のPyQtをビルドしようとすると、怒られます。

なのでQtからビルドしてやりました。
Qt、とにかく巨大なのでまぁビルド時間が掛かるわ掛かるわ。
寝てる間にひっそりビルドさせるのが良いかもしれませんね。。

で、上記のリンクに一部補足です。

  • すでにdmgからインストールしてしまった場合
  • makeする際に32bit版を読みに行ってやはりエラーになるので、アンインストールしましょう。アンインストール方法はこちら
    Uninstall script: /Developer/Tools/uninstall-qtsdk.py
    とのことなので、これをrootで実行してやればOKなはずです:D

  • qmakeが見つからない
  • 自分でビルドしたQtは、/usr/local/Trolltech/Qt-4.X.Xにコピーされます。qmakeなどを使いたい場合は$PATHに/usr/local/Trolltech/Qt-4.X.X/binを追加してあげるとOKでした。

  • make install出来ない
  • 初歩的ですが、sudoつけてますか。Unix系OSではインストールが行えるのは基本root(管理者権限)だけ!

上記のページのおかげで無事インストールできたので(ありがとう!)、超簡単なUIを作ってみました。
以下にコード。

————————————————————
from PyQt4 import QtCore, QtGui
import sys

app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
w.setWindowTitle('PyQt Test Window')
l = QtGui.QLabel('Hello PyQt!')
b = QtGui.QPushButton('HELLO')
lay = QtGui.QBoxLayout(0)
lay.addWidget(l)
lay.addWidget(b)
w.setLayout(lay)
w.show()
app.exec_()

————————————————————

で、これを実行するとこんな画面が出ますよ。
hello_pyqt4_on_snowleopard

 
ちなみにWindowsの場合は、32bit版のPythonインストールして、PyQtのインストーラ使うのが一番最速でスタート出来る方法だと思います。
会社で64bit版のPython使ってて環境の混在が嫌だぜ!などでなければ、それが一番楽だと思います。何も考えずにとりあえずPyQt触りたい!ってことであれば、バッチリおすすめです。

以上、こちらもメモ書きかねてのポスト。

「PyQtを動かす@Snow Leopard」への5件のフィードバック

  1. import sip
    import maya.OpenMayaUI as mui
    from PyQt4.QtCore import *
    from PyQt4.QtQtGui import *

    def getMayaWindow():
    ptr = mui.MQtUtil.mainWindow()
    return sip.wrapinstance(long(ptr), QObject)

    class Form(QDialog):
    def __init__(self, parent=None):
    super(Form, self).__init__(parent)
    self.WindowTitle(‘Test Dialog’)
    self.setObjectName(‘mainUI’)
    self.mainLayout = QVBoxLayout(self)
    self.myButton = QPushButton(‘myButton’)
    self.mainLayout.addWidget(self.myButton)

    global app
    global form
    app = qApp
    form = Form(getMayaWindow())
    form.show()

    _____________________________

    こんな感じでMayaのWidnowをPyQtのWindowの親にできる
    ので、PyQtのWindowがMayaを操作すると後ろに隠れちゃう
    こともなくなります。あとpumpThreadがいらなくなったのも
    いい感じです。

  2. >inagakiさん
    完っ全に放置してました。すみません、、、
    そして早速ナイスな情報!ありがとうございます!
    なるほど、メインウィンドウを親にするだけで良いというのは非常に楽で良いですね:D
    しばらくQtもPythonも触らない感じですが、次何か書くときは是非挑戦してみたいです!

  3. Qtのtar.gzじゃなくてzipを落とすと、configureで文字コードエラー出て進まないから注意だぜ…orz

  4. >hajimeさん
    追加情報ありがとうございます!
    PyQt、これ以降全く触ってないので、こっちの情報も全くノータッチとなっております(^q^)
    入門マスター・・・orz

コメントを残す

メールアドレスが公開されることはありません。