Py淡

Python, Python, Python! In the spirit of "import antigravity"

bibtexマネージャーを作ってみる。その2:wxPython3.0でwx.lib.agw.auiを使う。

f:id:i-namekawa:20150716180050p:plain

作り始めて3日目のスクリーンショット。現在コメントやICONのリソースのバッファ21行を含めて265行。

さて、いろいろな空き時間にコーディングして、とりあえず使えるものが出来ました。

上にあるスクリーン ショットで、authorのところの下矢印はAuthorカラムでの昇順でのソートを示しています。他のカラムをクリックしてタイトルでソートしたり yearでソートしたりできます。listmix.ColumnSorterMixinをつかったので、とっても楽に出来ました。

右クリックメニューから選択中の論文でsublistを作って新しいタブに開いたり、PDFビュワーで一度に開いたりもできます。左端のPDFアイコンはbibtexの'file'タグにあるファイルパスが指定されているもの。

あとは開いたタブを次回起動時に覚えているようにすれば最低限の自分が使えるものは完成です。wxPythonはやっぱり簡単でいいなぁ。

wx.auiとwx.lib.agw.auiの違い

今まではwxPython2.8の安定版をづっと使ってきましたが、最近wxPython3系統が正式にリリースになったのでPython2.7.5とwxPython3.0.0.0で作っています。

bibtexファイルを同時に複数開いた時に、それぞれをタブとして持ちたいので、これには以前カルシウムイメージングのROIドローイングソフトPymagorを作ったときに一度つかったAdvanced User Interface library (AUI)のwx.aui.AuiNotebookを使いました。

AUIは、Advanced User Interface libraryの略で、見た目もスタイリッシュでかっこ良いwxの中のサブライブラリです。

wxPython demoでauiをみてみるとwx.auiではなくってwx.lib.agw.auiを使っている場合が多い。どう違うんだっけと思って調べると、この質問によると

wx.lib.agw.aui is a re-implementation of wx.aui using only Python code.

だそうで、同じ機能+アルファをPython版で提供しているものらしい。基本的にwx.libにあるものは全部Pythonバージョンらしい。
試しにwx.auiで作り始めたアプリをwx.lib.agw.auiに差し替えたところ問題なく動作したので、ちゃんとAPIも互換しているらしいし、+アルファの部分が嬉しい。例えばwx.aui.AuiNotebookにはSetRenamableというメソッドがないが、agwの方にはこれがあるので、タブの名前をがダブルクリックで変えられるようにするのが一行でできてしまった。

wx.lib.agw.auiのAGWとはAdvanced Generic Widgetsのことで、AUIを含めていろいろなちょっと高度なウィジェットが提供されています。APIwxPythonのバージョン3系(Phenix)のDocにあったのでメモ。見つけるの大変だったが、これで安心してwx.auiから乗り換えられそう。。wxPython3も今のところまったく問題がないです。