Home > dev > PyQtを動かす@Snow Leopard

PyQtを動かす@Snow Leopard

  • Posted by: tai
  • 2010/04/22 03:17
  • dev

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触りたい!ってことであれば、バッチリおすすめです。

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

Comments:5

inagaki 2010/05/08

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がいらなくなったのも
いい感じです。

tai 2010/05/16

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

hajime 2010/07/31

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

hajime 2010/07/31

pythonで実行時
from PyQt4 import QtCore, QtGui
これでエラー。
configure.pyを直してくださいだそうです。

http://renderfast.com/2009/11/07/getting-pyqt4-to-work-on-snow-leopard/

tai 2010/08/02

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

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.taikomatsu.com/2010/04/22/pyqt%e3%82%92%e5%8b%95%e3%81%8b%e3%81%99snow-leopard/trackback/
Listed below are links to weblogs that reference
PyQtを動かす@Snow Leopard from memlog

Home > dev > PyQtを動かす@Snow Leopard

Return to page top