wxPython

自分で開いたウィンドウを自分で閉じるプログラム

ウィンドウを開くのだが、ある条件になったときに開いたウィンドウを自動的に閉じたい場合が多々ある。閉じる条件はいろいろあり、閉じる方法もまたいろいろ考えられる。 ここでは、次々更新される外部ファイルの内容を読み取って、そのファイルの中に特定の…

pyInstallerの使用方法

wxPythonとMatplotlibで作ったスクリプトを、py2exeでバイナリ化しようとしたら久しぶりなので設定を忘れてしまい、どうにもこうにもできなかったので、あきらめてpyInstallerを使うことにした。参照:http://retrofocus28.blogspot.jp/2013/10/pyinstallere…

scim_bridgeのエラーメッセージ

VMWare上で動作しているCentOSにwxPythonをインストールして、GUIアプリを起動したときに出てくるメッセージ。プログラムの実行には影響ないようだが、気持ちのいいものではない。 Another agent is running... Failed to allocate the agent. Exitting... F…

wx.DirDialogのスタイル

ディレクトリ(フォルダ)選択ダイアログを開きたいときには、wx.DirDialogを使う。そのとき指定できるスタイルは以下の通り。(参照:wxPython API Documentation — wxPython Phoenix 4.0.3 documentation) スタイル 説明 wx.DD_DEFAULT_STYLE デフォルトの…

ソフトウェアにタイマーを組み込む

ソフトウェアにタイマーのようなものを仕込みたい。 例えば、ある時間が経過すると何かが発動するようなもの。用途はいろいろ考えられるが、ユーザーに提供するお試し版ソフトウェアをある期日まで使用可能とし、それ以降は起動できないようにする、とか。悪…

 デバッグ作業中

スクロールするパネルの上にタブを置く。 このとき、作ったプログラムがおかしな挙動を示すので、簡単な例から原因を追及する。 取り急ぎ作成のプロトタイプは、全く異常なし。予想通りの動作を示す。 ソースコード。 import wx import wx.lib.scrolledpanel…

 wxPythonコードのスタイルガイド

StdDialogButtonSizerについて調べていたら、wxPythonコードのスタイルガイド(全10項目)を見つけたので、内容を確認し今後書くコードにできるだけ反映させたい。これに準ずるように努力すれば、クリアでPythonicなコードになるらしい。以下引用の出典:wxP…

ボタンを並べる順番を迷ったときに使うSizer

←Linuxでの表示 ←Windowsでの表示ダイアログにボタンを配置する場合、「Yes」「No」であったり、「Cancel」「OK」であったり、複数のボタンを並べなければいけなくなると、どう配置したらいいか迷ってしまう。その上、ダイアログが増えてくると、あっちのダ…

今日のGUIクラッシュ(マルチスレッド関連)

threadを使うwxPythonによるGUIがクラッシュするときに表示される、エラーメッセージのいくつかのパターン。 パターン1 (python:14799): Gtk-CRITICAL **: gtk_text_layout_wrap_loop_start: assertion `layout->one_style_cache == NULL' failed パターン2 …

最近のバグ

最近、Linux上でGUIを動かすときに悩まされるバグ。 Gtk-ERROR **: file gtktextlayout.c: line 1113 (get_style): assertion failed: (layout->one_style_cache == NULL) aborting... どうも、Thread関連のエラーらしい。Thread実行するとGUIがクラッシュす…

matplotlibで書いたグラフにラベルを付ける

matplotlibで久しぶりにグラフを描く。 複数の線を描くので、線ごとにラベルを付けたかったのだが、label='...'をplot(...)の中に加えるだけでは表示されず、あれこれ迷う。簡易コードを書いて2時間ぐらい奮闘し、やっとlegendで表示位置を指定しなければ書…

座標ラベルの書き方

OpenGL ES on Python: Writing x, y and z axis 参考にする。 さらに矢印を描く。 http://8.ldblog.jp/archives/52085019.html 結構、面倒だ。

 Linuxではキーボード入力ができない問題

2011-04-19 - 理想のユーザ・インターフェイスを求めて において、キーボード入力を受け付けるようにしたが、Linuxでself.Bind(wx.EVT_CHAR, self.OnKeyboard)が無視される問題に気づく。 どんなキーを押しても反応なし。

バーチャルリストでリスト表示を低負荷に行う(2)

2011-09-28 - 理想のユーザ・インターフェイスを求めての続き。wxPythonの話。 VListBoxのサンプルを改良して、他で使える形にもっていく。 改良のポイントを列記すると、 リストはVListBoxで作成 リストの前後に他のコントロールを配置 ボタンを押したとき…

画面のロック用のログインダイアログ

GUIアプリケーションのための、ログイン用のダイアログを作成する。 このダイアログでの認証が成功しなければ、メイン画面の操作ができないようにしたいときに使用する。アプリケーションの画面をロックしたいときにも使える。 wxPythonの料理本の3章の4に出…

バーチャルリストでリスト表示を低負荷に行う

wxPythonでGUIを作るときの話。wxListCtrlでリストを作成して表示する。しかし、リストが大きくなると表示にかかる時間やメモリの消費量も無視できなくなってくる。そのような場合のために、「バーチャルな」リストコントロールというものがある。リストの中…

購入した洋書

最近の1ドル76円の円高を利用して、Amazon.comで洋書を購入。 下記3冊を9052円(+送料832円)で注文できた。実際には、1ドル80円ぐらいで換算されている。8月25日に注文して、9月5日着。予定より1ヶ月ぐらい早く到着。Wxpython 2.8 Application Development…

wxNotebookで表示しているパネルを隠したいとき

wxNotebookを使って、いくつかのパネルをタブ切換えで表示させている。このとき、あるパネルだけ非表示にしたいときがある。そのときは、Hide()を使うことにする。 例えば、下記のコード。 import wx class MyApp(wx.PySimpleApp): def OnInit(self): Frm = …

マウスの右クリックでメニューを表示させる方法

GUIの画面上で、マウスの右ボタンをクリックしてメニューを表示させる方法を検討する。「wxPythonデモ」のListCtrl.pyを参照した。 下のコードでは、マウスの右ボタンを押して離したとき(wx.EVT_RIGHT_UP)に、ポップアップメニューを表示するようにしている…

編集可能な表をwxListCtrlで作成する

wxListCtrlで作成した表において、セルの値を直接編集することはできない。SetStringItemメソッドで、値を変えることはもちろんできるが。ここでの直接編集とは、マウスで表のセルをクリックして値をキーボードから入力するようなことを指す。wxGridなどを使…

matplotlibのバックエンドの設定に関するエラー

matplotlibをインストールするとき、backendをaggに指定してしまったらしい。そのため、以下のスクリプト(グラフを描いてウィンドウで表示するだけ)を実行すると、エラーになる。 import matplotlib import matplotlib.pyplot as plt fig = plt.figure() a…

wxChoiceの項目を操作に応じて変えたい場合の対処法を考える

プルダウンメニューから項目を選ばせたいとき、wxChoiceを使うことができる。こういうやつね。 このwxChoiceの項目を、動的に変える方法を考える。アプリを起動してから終了させるまで、項目を変える必要がないなら何もしなくても良いが、ある操作によって選…

wxCollapsiblePaneで開閉できるパネルを作る

ボタンを押すと出たり消えたりするパネルを、wxPythonで作りたい。wxCollapsiblePaneが、一番動作イメージに近いかな、と思うので使い方を検討する。参考:wxPython API Documentation — wxPython Phoenix 4.0.3 documentation例えば、「Show」の方のラジオ…

NotebookをPanelの上に置くときはSizerで調整

wx.Notebookで、タブ切換えの複数の画面を作りたいときには、Frameの上にNotebookを置いて、以下のようにやればよい。 import wx class MyApp(wx.PySimpleApp): def OnInit(self): Frm = wx.Frame(None, -1, 'Title', size=(500, 500)) nb = wx.Notebook(Frm…

 wx.PlatformInfoでプラットフォーム情報を確認

wx.PlatformInfoクラスで、wxPythonを実行しているプラットフォームの情報が見られる。日頃使っているそれぞれの開発環境で実行してみた。 CentOSでは >>> wx.PlatformInfo ('__WXGTK__', 'wxGTK', 'unicode', 'gtk2', 'wx-assertions-on', 'SWIG-1.3.29') W…

gifアニメーションを、wxの画面上で再生する方法

gifのアニメーションファイルは、通常の画像ファイルのようにwx.StaticBitmapで画面に貼り付けても静止画として表示されるだけ。アニメーションを再生させるには貼り付け方を変えなければいけない。どう変えるか? wxPythonのデモの中に、複数のgifアニメー…

デジタルフォトフレームの動作をwxPythonで実装する(4) -Windowsではちゃんと画面遷移する-

同じコードをWindowsで実行すると、ちゃんと画面遷移する。途中で固まったりしない。問題なし。 実は問題がある。表示される画像サイズがフレームと合っていない。 なぜこんなことになるのか不明。ちゃんとスケールしているのに。

デジタルフォトフレームの動作をwxPythonで実装する(3) -Linuxでは少しまともに動く-

昨日(デジタルフォトフレームの動作をソフトウェア的に実装する - 理想のユーザ・インターフェイスを求めて)のコード実行時のエラーなのだが、うちのMacでだけ起こるエラーのようだ。Linux環境で実行したらエラーが再現されなかった。 (▲Chromeの画像を表示…

デジタルフォトフレームの動作をソフトウェア的に実装する(2) -wxPythonの出番-

デジタルフォトフレームで実現している自動的な画像切り替えの動作を実装することが目標である。フォトフレームでなくても、スクリーンセーバーなんかでも見られる自動画像切り替えをどう実現するか、を自分のアタマで考えていろいろと試してみたい。 とりあ…

描画した図形をマウスで操作する(9)

PythonのOpenGLライブラリを用いて、3次元図形の描画を行う練習をしている。 マウスで物体を回転したり平行移動したりしたかったのだが、回転と平行移動を組み合わせるとうまくいかない。そこで、とりあえずは平行移動をあきらめて、現状のコードをまとめる…