2007-01-01から1年間の記事一覧

タブを切り換えたときのイベント(wxNotebook)

複数の画面をタブで切り換えられるようにして並べた。画面を切り換えるときに同時に標準出力のリダイレクトを行おうとしたのであるが、どう書いたらいいのか悩んだ。wxPythonのdemo.pyのNotebook.pyでタブを切り換えたときのイベント処理の仕方があったので…

 Linuxの教科書

Linuxの使用歴は長いのであるが、管理者などはやったこともないので知識が非常に偏っている。そこでこの本を勉強しているのであるが、とりあえず一回目読了。かなり知らないことだらけであった。 三回ぐらい読んだらせっかくなので試験でも受けてみるかもし…

wxPythonでモナ危機一髪ゲーム

Pythonとは全く関係ないのであるが、たまたまMonaOSの本を手にした。MONA―2ちゃんねる発祥の手作りOS作者: ひげぽん出版社/メーカー: 毎日コミュニケーションズ発売日: 2005/04メディア: 単行本 クリック: 42回この商品を含むブログ (62件) を見るOSを一から…

LinuxとWindowsでの動作の違い(ファイルの拡張子)

GUIのデバッグ作業をLinuxとWindowsで行っているのであるが、どちらでも動作するようにするつもりだがなかなか難しい。スプラッシュ画面にPNGファイルを表示しているのであるが、Windowsでは問題なく表示できるがLinuxではファイルを認識してくれなかった。o…

リストの要素の足し算

リストの全部の要素の和をとる場合、for文を使うのはエレガントではないのだろうな、と考えながら”初めてのPython”を探すと案の定、代わりの表記法を見つけることができた(p.273)。reduce関数を使う。 lp = [1, 0, 1, 1, 0, 1] sum = reduce((lambda x, y: x…

マルチスレッド化(threadモジュール)

GUI画面のボタンを押すことで処理が始まるようにしたのだが、その処理が重く長時間かかるような場合には、画面がフリーズした状態になってしまう。それを解消するためのマルチスレッド化は以外と簡単(のように見える)。デモの中のThreads.pyにあるように、…

今月中にGUI完成予定

何とか今月中に、動く形にしてGUIを完成できそうなところまで来た。今回の作成過程で、マルチスレッドの重要性を実感した(プログレスバーの表示とかに使える。まだ実装できていないが...。実装するかどうかも検討中)。マルチスレッドのプログラミングには…

既存のファイルの内容を書き換える(os, shutilモジュール)

GUI画面で定義した変数の値を、ファイルにすでに記録されている値と入れ替える。その場合の文字列処理を次のように行った。 import os import shutil import Util # Utilファイルに新しい変数値を入れておく def RecordVariables(path): filepath = os.path.…

 サブプロセス実行時のディレクトリの移動とログファイルの書き出し(修正版)

昨日の使用例のコードをWindowsで実行すると、なぜかフリーズする傾向にある。原因はよく分からないのだが、コードを少し修正した。下の修正版のようにするだけで動作がかなり異なる。 本質的には何も変わっていないと思うのだが...。(使用例 修正版) impo…

サブプロセス実行時のディレクトリの移動とログファイルの書き出し

ディレクトリの移動 これからも頻繁にGUIの中で使うであろう。os.chdir() >>> print os.getcwd() # カレントディレクトの確認 >>> os.chdir(path) # pathで指定したディレクトリへ移動する。 ログの表示 出力されるログを表示するのに、普通にprintでは1行ご…

ボタンを押すと特定のプログラムを実行し、実行している間プログレスバーを表示する(その3)

サブプロセスの実行中は、実行していることを示すプログレスバーを表示し、実行が終了したらプログレスバーを消すようなコードを作りたい。過去、d:id:Megumi221:20070730(その1)、d:id:Megumi221:20070731(その2)では、プログレスバーを単独で表示す…

指定した時間だけ実行を停止させる

import time time.sleep(10) 引数は秒数を与える。この例では10秒。

パネルを折りたたむ方法(wx.lib.foldpanelbar)

いままでは、フレームの上に複数のパネルを上から順番に並べるような配置でGUIを作っていた。 サイザーを使うなどして、これでも十分納得できるものが作れるのであるが、なんか見栄えが今ひとつであった。 そこで、wxPythonデモをあれこれ探してみると、"Fol…

”変数=数値”という文字列から”変数”と”数値”を別々に取り出す(stringモジュールとmap関数)

GUIを通して、変数に値を設定することを想定している。その場合、設定された値を何らかの形式でファイルに保存しておく。GUIを再起動したときに、保存したファイルから値を読み込んで一度定義した変数には自動的に値を設定するようにしたい。 または、すでに…

ファイルのバックアップと管理(Subversion)

ファイル数が増えてきたので、そろそろバージョン管理システムを導入する。 現在はWindows上で作業をしているのであるが、Linuxでも将来的に使えるように、subversionですべてのファイルを管理することにした。Windows用の"TortoisesSVN 1.4.5"と日本語Langu…

ディレクトリの作成(osモジュール)と例外処理

ユーザインターフェースを操作するときに出力されるファイルを、まとめて保存するためのディレクトリを作成したい。osモジュールのmkdir関数を使えば、任意のディレクトリの作成はできる。 import os os.mkdir('testd') ちょっと困ったのが、すでにディレク…

すべての出力ファイルを指定したディレクトリに吐き出すようにする

ユーザがGUIを操作して、その結果出力されるファイルが大量にある場合に、ユーザが事前に指定するディレクトリにまとめて置くようにすると便利だ。 ディレクトリの指定(ファイルを保存するためのディレクトリをまず指定する) wxDirDialogを使えば選択の他…

入力後、テキストコントロールの色を変える

ユーザが値を入力するボックスをテキストコントロールで作成し、入力前はボックスの色を黄色にしておく。なんらかの値を入力し終わったらボックスの色を白くすることで、入力が終了したことを認識させる。ボックスの色は、SetBackgroundColourメソッドを使う…

円周率の表示方法(mathモジュール)

計算で使う円周率の表示方法。 import math print math.pi その他、mathモジュールが提供する関数は以下を参照。http://www.python.jp/doc/release/lib/module-math.html

wxStaticTextでの"&"の表示方法

wxStaticTextを使って、文字を表示する場合にほとんどすべての文字は問題なく表示できるのであるが、"&"だけどうしても表示できなかった。 "&"を直接書くと化ける(Windows XPでしか試していないが、"_"が表示される)。 "\&"としてもダメだった。 試行錯誤…

サブプロセスの実行手順(サブプロセス用の入力ファイル作成とサブプロセスの実行)

Pythonとは別のプログラム言語で作成したプログラムを、wxPythonのGUIから実行するときの手順をまとめておく。以前からたびたびやっているのだが、やるたびにどう書くのか迷ってしまうので。まずは、ProgramTest.py。 これはモジュールで、入力ファイル(file…

wxGridCellEitorのバグ? "0"を入力できない。

グリッドで表を作り、セルの中に実数値を入力できるようにするために、wxGridを使った。 数値の入力には、wxGridCellFloatEditorを利用する。 例えば、以下のように書くことができる。 import wx import wx.grid as gridlib class InpValue(gridlib.Grid): d…