Mac Python Tips

vivant... Hiroyuki Yoshimura

pentimento records Inc.,

February 1, 2001ー
Release 0.1


このページにはわたしのPythonのTipsが書いてあります。MacPythonのことが多いです。
詳しい説明は書いてません。
Mac Pythonのページ(よ)へ戻る


W.WindowにPICT
class WB(W.Window):
    def __init__(self, **args):
      W.Window.__init__(self, **args)
    def draw(self, visRgn = None):
      import Qd
      picHr = Qd.GetPicture(129)
      x = 300; y = 6
      Qd.DrawPicture(picHr,(x,y,x + 32,y + 32))

2002年2月1日

▲ページのTOPへ

MyAppでpref
MyAppでprefができないことがある。
preffilepath設定してるのに。原因不明。
preffilepathは残し、makepref moduleを作って対処した。Wウィジェットのフォントの指定など、変更すると作られるようだ。

2002年2月1日

▲ページのTOPへ

Wウィジェットのデフォルトボタン
self.setdefaultbutton(self.button) これで'return'と'enter'がバインドされる。

2002年1月29日

▲ページのTOPへ

MyApp.pyのメニュー
enable/disable
開いたウィジェットのトップに
domenu_何とか
can_何とか

がなければならない。

2002年1月29日

▲ページのTOPへ

PutFile/aetoolでエラー
NavigationServiceをオフにすると、でない。
MacOS8.1だからか?

2002年1月27日

▲ページのTOPへ

Trashフォルダのパス
fsspec_pref1, fsspec_pref2 = macfs.FindFolder( MACFS.kOnSystemDisk, MACFS.kTrashFolderType, 0)
trash_path = macfs.FSSpec((fsspec_pref1, fsspec_pref2, '')).as_pathname() + os.curdir
ファイルをTrashにいれるには
findertools.move(file_path, trash_path)

2002年1月18日

▲ページのTOPへ

W.ScrollBar
editor = W.TextEditor((0, 0, -15,-14), wrap = 0) self.w.content._barx = W.Scrollbar((0, -15, -14, 16), editor.hscroll, max = 32767) self.w.content._bary = W.Scrollbar((-15, 0, 16, -14), editor.vscroll, max = 32767) self.w.content.editor = ed

2001年12月8日

▲ページのTOPへ

Resの書き込み/削除
rsrc_file_handle = Res.FSpOpenResFile(RSRC_NAME, 2)
  2:読み書きモード
try:
 vers1handle = Res.Get1Resource("vers", 1)
 vers1handle.RemoveResource()
except:
 pass
vers1handle = Res.Resource(long_version_str)
vers1handle.AddResource("vers", 1, "Long version")

2001年11月6日

▲ページのTOPへ

unicode
jstr = unicode("日本語","japanese.shift_jis")
print jstr.encode("japanese.shift_jis")

これはPythonIDEで日本語表示できるが、PythonInterpreterではだめ。

2001年10月10日->これはもっと根本的な問題である。解決のためLightOutputWinを作った。

▲ページのTOPへ

PythonCGISlave
PythonCGISlaveをつかったスクリプトでリダイレクトが使えない。

2001年9月18日

▲ページのTOPへ

HandleとScrap
Res.Handle('XXXX')
#'XXXX'はリソース名。でHandleができる。
handle = Res.Handle('')
stuff = Scrap.GetScrap(handle,'TEXT')[0]
if stuff > 0:
  stuff_data = handle.data

でstuff_dataにクリップボードのテキストの内容が入る。

2001年9月7日、2001年10月16日訂正。

▲ページのTOPへ

open('〜', 'rb')
readlinesを使うと、リスト内に1つの項目として['〜\015〜\015...']読み込む。'r' だと、'\012'が付く。

2001年9月5日

▲ページのTOPへ

ファイルの書き込み
ファイルに書き込む場合は'wb'で開く。'w'だと、Unixの改行コードになる。

2001年8月15日

▲ページのTOPへ

BuildApplet
ビルドするスクリプトファイルが
タブされた文で終わってる場合は改行を入れておく。
if __name__=='__main__':
  main() [return]

そうしないとSyntaxエラーが出てビルドできない。

2001年8月12日

▲ページのTOPへ

リソースファイル
RSRC_NAME= sys.argv[0][:-3]+'.rsrc'
リソースファイルを設定しておくと便利。

2001年8月10日

▲ページのTOPへ

デコード
URLがらみのコード "%XX%XX..." は、 urllib.unquote( str )
でデコードできる。

2001年8月3日

CGI
import os
fp = open('testFor_os.environ', 'w')
fp.write(os.environ['AE_AGNT' ])
fp.close()
のファイルの実行で以下の内容のファイルができる。
iCab J/2.5.1 (Macintosh; I; PPC)

2001年7月30日

time
import time
localTime = time.ctime(time.time())

2001年7月27日

SetDialogDefaultItem
Dlgモジュールにあった。Cのソース見て分かった。
f=Dlg.GetNewDialog(DLG_ID, -1)
f.SetDialogDefaultItem(1)

2001年7月6日

▲ページのTOPへ

CreatorとFREF
↓にしたがってFREFにフォルダを登録して、フォルダのドロップを受け付け、TEXTは受け付けないアプレットを作ったら、Creatorは他のPythonアプレットと同じPyt1だったので、他のPyt1のアプレット(BuildAppletとかBuildApplication)も同じ設定になった。a新しく作ったスクリプトを削除して、デスクトップの再構築をして、直した。

2001年5月23日

▲ページのTOPへ

アプレットのPref
アプレットあるいはそのリソースファイルをEditPythonPrefsにドロップ・起動によりEditPythonPrefの内容を設定できる。

2001年5月23日

▲ページのTOPへ

FREF(ResEdit)
FREFでTEXT、foldを設定すると、そのアプリケーションにそれらのタイプをドロップして起動できる。
先にBNDLから作っていく。

2001年5月23日
2002年1月18日

▲ページのTOPへ

macfs.GetDirectory
ダイアログで選ぶとas_pathname()は最後に「 : 」がつくが、フォルダをドロップして選ぶとつかない。どちらのばあいでもフォルダ名を選ぶためには
path = string.split(self.path, ':')[-1] != '' and string.split(self.path, ':')[-1] or string.split(self.path, ':')[-2]

2001年5月22日

▲ページのTOPへ

ドロップ(コマンドライン引数)
ドロップされたファイルを扱うアプリケーションはコマンドライン引数sys.argv[1:]として取り扱う。UnixのCと同じ。

2001年5月22日

▲ページのTOPへ

build(applet, application)
スクリプトに
if __name__ == '__main__':
    main()
があるとSyntaxエラーになってビルドできない。ifをなくし、main()のみにする。

→誤り。上の2001年8月12日付BuildApplet参照。(2001年10月12日追記)

2001年5月22日

▲ページのTOPへ

appletの作成とpath
スクリプトと同じフォルダにあるモジュールもimportしてくれるが、できたappletの場所を動かすとプログラムはモジュールを探せない。sys.pathに通しておくか、Applicationにビルドする。

2001年5月21日

▲ページのTOPへ

execfile
execfile(ファイル名, dict)
ex.ファイルdo_test.py
namespace ={"__name__":"__main__"}
execfile("test.py",namespace)

ファイルtest.py
def main():
   print "This is TEST"
if __name__ == '__main__':
   main()


do_test.pyの実行でtest.pyがmainとして実行される。

2001年5月20日

▲ページのTOPへ

CGI
Quid Quo ProではPythonCGISlaveを使う。
設定は以下の通り。

IMG
「:PythonCGISlave」のように「:」を入れることでホームディレクトリにPythonCGISlaveがあることを伝える。

IMG 「.py」の設定で、「.py」のあるファイルはPythonCGISlaveに処理されることになる。
「cgi.」「acgi.」もこの通り。

IMG ホームディレクトリにPythonCGISlaveを置く。

2001年5月20日

▲ページのTOPへ

tempfile
tempfile.tempdir = MyFolder
→tempfile.mktemp()で作られるファイルのパスをMyFolderに設定できる。

2001年4月27日

▲ページのTOPへ

string属性に対するmethod
a = range(10)
a = map(str, a)
print a
print "::".join(a)
print 1 and getattr("","join")

2001年4月18日

▲ページのTOPへ

[ list for list in lists if ......]
if statementに合致するlists中のlistからなるリストを返す。
a = range(10)
a_list = [ num for num in a if (num % 2 == 0)]
print "using if statement in [] ->", a_list
def even(x):
  return x % 2 ==0
a_filter = filter(even, a)
print "using filter ->", a_filter

2001年4月17日

▲ページのTOPへ

boolean and (lambda x) or (lambda y)
boolean =1ならxを実行し、boolean=0ならyを実行する。 if statementの代わりに使える。and/orの応用。

2001年4月17日

▲ページのTOPへ

pop
>>> li
['a', 'b', 'mpilgrim', 'example', 'new', 'two', 'elements']
>>> li.pop()
'elements'
>>> li
['a', 'b', 'mpilgrim', 'example', 'new', 'two']

2001年4月15日

▲ページのTOPへ

BuildApplet/Applicationできない時
BuildApplet/Applicationのアプレットへドロップするのではなく、BuildApplet/Applicationスクリプトでビルドする。→macfreezeスクリプトでビルドする。
∵Debug値のせいか?

2001年4月12日

▲ページのTOPへ

Directive
# macfreeze: command (argument)
BuildApplication/macfreezeの実行時に不要なmoduleを除外したり、選択したりできる。メインのスクリプトファイルに書くこと。

2001年4月12日

▲ページのTOPへ

W application
W widgetのMyAppでアプリケーション(Applet)を作ることができる。

2001年4月12日

▲ページのTOPへ

NavigationServiceとmacfs
NavigationServiceがインストールされているときのFileのget/putは(macfsn)、macfsとは逆になる。
macfs.StandardGetFile(path,'TEXT')
では、macfsnが代わりに呼び出され、'TEXT'ファイルは選択ウィンドウに現れない。

2001年3月2日

▲ページのTOPへ

pref(ファイルType)
リソースでAPPLの設定、ownerの設定をしていれば、ファイルTypeを'pref'に設定するとアイコンはprefprefになる。

2001年3月1日

▲ページのTOPへ

DLOGのItemHit
f = Dlg.GetNewDialog(ID_FINI, -1)
while 1:
n = Dlg.ModalDialog(None) ←ここで待ち受ける
if n == 1:
return

2001年3月1日

▲ページのTOPへ

初期設定フォルダFSSpecを得る
fsspec_pref1, fsspec_pref2 = macfs.FindFolder( MACFS.kOnSystemDisk, MACFS.kPreferencesFolderType, 0)
fsspecPref = macfs.FSSpec((fsspec_pref1, fsspec_pref2, pref_filename)).as_pathname()

2001年3月1日

▲ページのTOPへ

SplashScreen
スプラッシュスクリーン
MacOS.splash(ID_SPLASH)で出現
MacOS.splash(O)で消える。

2001年3月1日

▲ページのTOPへ

ResEdit
f = Dlg.Alert(ID_ALERT,None)でアラートが出せるようになったが、Content Colorが指定通りに出ない。DLOGはカラーで出る。
f = Dlg.Alert(ID_ALERT,None)
return
以上でアラート閉じる。他にNoteAlert, StopAlert

2001年2月23日

▲ページのTOPへ

タブと空白
タブの代わりに空白でも構文は認識されるが、タブと空白が混在すると、ダメ。

2001年2月22日

▲ページのTOPへ

RSRCのvers
versのIDを1にすること(そうしないと、Get Infoに表示されない)。デフォルトでは128になる。ID2でLongVerに書くと、Get Infoでアイコンの右のファイル名の下に表示される。

2001年2月22日

▲ページのTOPへ

FrameWork
FrameWorkで作ったQuitメニューでショートカットが使えない。dnslookup-2もそう。
->addPythonTips_v.0.41でmainDialogのテキストアイテム2つとOKボタンのenableのチェックをはずしたら機能する。しかし、そうすると、text入力が2文字ずつになってしまう。

2001年2月22日

▲ページのTOPへ

ResorceID
リソースIDには512以上を割り当てること。それ以下のIDはシステムorPythonが使用している。

2001年2月15日

▲ページのTOPへ

ResEdit-Java
JBindaryでSplash Screen付のApplicationを作るにはPICTに-16000で画像を登録する。

2001年2月13日

▲ページのTOPへ

Wを使ったApplet/Applicationのビルド
Mac:Tools:IDEのWidget.rsrcをコピーして(スクリプト名).rsrcファイルを作り、組み込むこと。Template_for_Wpython.rsrcとしてResEdit.Preferenceに作成した。
また、W.pyを使ったスクリプトはPythonInterpreterで実行できない。

2001年2月6日

▲ページのTOPへ

Applet
AppletをPyEditPrefにドロップすると、そのAppletの設定をすることができる。Delay console window until needed のチェックでconsoleを出さない。

2001年2月6日


Last modified at 2002/4/26 3:29:26 PM