Pythonを使って見よう

ふと、Pythonを学びたくなったので、ZaurusSL-C3000)にインストールしようと思い立った。

インストール

ここを参考にpython24.ex2.gzpython-exe_2.4.0-1_arm.ipkをダウンロードし、以下のコマンド:

# cp python24.ex2.gz /hdd3/Documents/
# gzip -d /hdd3/Documents/python24.ex2.gz

でpython24.ex2を/hdd3/Documents/に作成して、python-exe_2.4.0-1_arm.ipkをいつも通りに「ソフトウェアの追加/削除」でインストールした。
次に、以下のコマンド:

# /etc/rc.d/init.d/mntpython start

python本体と各種ライブラリが含まれているpython24.ex2(ext2イメージ)をマウントすれば、pythonが使用できるようになるので早速試して見よう。

$ python -c 'print "hello world"'

PyQtも欲しい

PythonZaurusGUIを実現するために、世の中にZaurusPyQtPyQt/Embedded)はないものかと探して見ると、SL-A300用のを発見したが、SL-C3000用のは見つからなかった。

残念に思いながらも、どんなモジュールが存在するのかとSL-A300PyQtを見てみると、以下の内容:

usr
 +--lib
     +--python2.2
         +--site-packages
                libqtcmodule.so
                libsip.so
                libqtcanvascmodule.so
                libqtnetworkcmodule.so
                libqtpecmodule.so
                libqttablecmodule.so
                qt.pyc
                qtcanvas.pyc
                qtnetwork.pyc
                qttable.pyc
                qtpe.pyc

となっていた。
これらをインストールしても問題が無いかどうかと確認して見ると、以下の内容:

$ ls /opt/QtPalmtop/lib/python2.4/site-packages/
MySQLdb                _sqlite.so             qttable.so
PalmDB.py              pyqtconfig.py          serial
PalmDB.pyc             pyqtconfig.pyc         sip.so
README                 qt.so                  sipconfig.py
_mysql.so              qtcanvas.so            sipconfig.pyc
_mysql_exceptions.py   qtnetwork.so           sqlite
_mysql_exceptions.pyc  qtpe.so

となっており、形は違えどqtpeモジュールが存在することを発見した。
試しに、Pythonのプロンプトでは:

$ python
>>> import qt
>>> import qtpe
>>> for key in sorted(qtpe.__dict__.keys()):
...     print key, "=", qtpe.__dict__[key]
...
    :
    :
QPEApplication = <class '__main__.qtpe.QPEApplication'>
QPEMenuBar = <class '__main__.qtpe.QPEMenuBar'>
QPEToolBar = <class '__main__.qtpe.QPEToolBar'>
    :
    :
>>> for key in sorted(qt.__dict__.keys()):
...     print key, "=", qt.__dict__[key]
...
    :
    :
QPushButton = <class '__main__.qt.QPushButton'>
QRadioButton = <class '__main__.qt.QRadioButton'>
    :
    :

と表示され、明らかにPyQt/Embeddedは存在している。
勢い込んで、ここを参考に以下のスクリプト

# Qt tutorial chapter 1

import sys
from qt import *
from qtpe import *

a = QPEApplication(sys.argv)
box = QVBox()
hello = QPushButton("Hello world!", box)
box.setCaption(sys.argv[0])
box.resize(140, 30)
a.setMainWidget(box)
box.show()
a.exec_loop()

を実行すると、問題なく動作するようだ。