Pythonを使って見よう
ふと、Pythonを学びたくなったので、Zaurus(SL-C3000)にインストールしようと思い立った。
インストール
ここを参考にpython24.ex2.gzとpython-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も欲しい
PythonでZaurusのGUIを実現するために、世の中にZaurus版PyQt(PyQt/Embedded)はないものかと探して見ると、SL-A300用のを発見したが、SL-C3000用のは見つからなかった。
残念に思いながらも、どんなモジュールが存在するのかとSL-A300用PyQtを見てみると、以下の内容:
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()
を実行すると、問題なく動作するようだ。