星期二, 12月 16, 2008

Python 記事(自言自語區)…



最簡單的 hello world
import wx
app = wx.PySimpleApp()
frame = wx.Frame(None, wx.ID_ANY, "Hello World")
frame.Show(True)
app.MainLoop()



最簡單的wx程式,

重點是 wx.Frame(None, wx.ID_ANY, "Hello World")


通常的wx元件就是長這個樣子…


可以用None 跟 wx_ID_ANY 來給第一跟第二個參數用,


代表著這個frame沒有父物件,也沒有id…











加入可以打字的文字欄位

import wx

class MainWindow(wx.Frame):


    """simpyly deruve a new class of  Frame"""


    def __init__(self,parent,id,title):


        wx.Frame.__init__(self,parent,id,title,size =(200,100))


        self.control = wx.TextCtrl(self,1,style = wx.TE_MULTILINE)


        self.Show(True)



app = wx.PySimpleApp()

frame = MainWindow(None,wx.ID_ANY,'small editor')


app.MainLoop()




除法 wx.App之外 還有個 叫 wx.PySimpleApp 的(應該是給簡單一點的程式用的)

這裡的frame沒有指定父物件,表面上看來跟app物件也沒關系…


我想應該就是讓電腦自已決定吧…



========20081121===============



利用COM讓MAX跟PYTHON溝通




COM是一種讓程式物件之間可以溝通的技術,即便他們是以不同的語言實作。




在python中可用class來定義所須要expose出來的mothed

範列程式:




class PythonUtilities:

    _public_methods_ = [ 'SplitString' ]


    _reg_progid_ = "PythonDemos.Utilities"


    _reg_clsid_ = "{41E24E95-D45A-11D2-852C-204C4F4F5020}"





def SplitString(self, val, item=None):


    import string


    if item != None:


    item = str(item) return string.split(str(val), item) 



if __name__=='__main__':


   print "Registering COM server..."


   import win32com.server.register



(空四格)win32com.server.register.UseCommandLine(PythonUtilities)




要註冊成COM物件須要提供三個東西

_public_methods_     #要expose出來的mothed


_reg_progid_            #程式id (有點像是比較好記的別名…)


_reg_clsid_               #真的程式id




import pythoncom

print pythoncom.CreateGuid()




用這個程式來取得_reg_clsid_



========20081216===============



用pyExcelerator寫xls檔

出處:


http://blog.donews.com/limodou/archive/2005/07/09/460033.aspx





#coding=cp936


from pyExcelerator import *




w = Workbook()

ws = w.add_sheet(u'这是中文')


w.save('mini.xls')




--以上為最簡單的寫xls方法



真正加入數值的語法如下




ws.write(i, j, value)




設定樣式的方式如下




font0 = Font()

font0.name = 'Times New Roman'


font0.struck_out = True


font0.bold = True



style0 = XFStyle()

style0.font = font0


ws.write(1, 1, 'Test', style0)