Python 板


LINE

其實是小弟自己做的東西啦 ^^; pygame [http://www.pygame.org/] 是個把 SDL [http://www.libsdl.org/] 包起來, 讓 Python 輕快實驗、寫遊戲的好東西 (正如其名 XD ) 但先前有個不太方便的地方,那就是「完全不支援 IME」 也就是說「沒辦法輸入中文、日文」 ... 但是 Jserv 與 dr.courage 做了 SDL-IM [http://sdl-im.csie.net/] 這個好東西 直接從 SDL 底層支援「跨平台」 IME 機制 使得在 pygame 裡面輸入中文不再是個夢想!感謝這兩位強者的貢獻 ;) 由於小弟最近想寫一點東西,實在不想等姍姍來遲的 pygame 1.8 因此直接編譯 SDL-IM 修改過的 SDL 版本 接著修改 pygame 1.7.1 版加上新的 IME 相關功能,順便配合 Python 2.5 編譯 這樣就不必為了寫東西而同時安裝 Python 2.4/2.5 了 ;) 若您想自己編譯 SDL 1.2.8 的話 要小心最新版的 SDL_image/mixer/ttf 可能會沒辦法配合 SDL 1.2.8 的舊介面 這邊使用的是 SDL_image-1.2.4, SDL_mixer-1.2.6 與 SDL_ttf-2.0.8。 下面是給 Python 2.5 用的 pygame 與 Numeric 安裝檔,內含所有相依檔案: http://mail.cs.nchu.edu.tw/~s9256043/Numeric-24.2.win32-py2.5.exe http://mail.cs.nchu.edu.tw/~s9256043/pygame-1.7.1release.win32-py2.5.exe Numeric 是 pygame 快速 surfarray 不可或缺的幫手 沒了它,要玩高速繪圖就會變得很有難度了 所以也一起幫 Python 2.5 做了一份安裝檔。 這份 pygame 裡面用的 freetype 有把 bytecode interpreter 打開 所以有授權考量的人請自行迴避 :p 另外 SDL_ttf 也在載入 glyph 的地方加了忽視全域寬度的選項 如此在應用「某些現成字型」的時候會比較快樂一點 ;) 以下是 pygame 的 patch 檔以及增改的 API 部分: http://mail.cs.nchu.edu.tw/~s9256043/pygame-1.7.1-sdl_im.diff > pygame.font.Font(filename, size, index=0): return Font > pygame.font.Font(object, size, index=0): return Font 就是把 SDL_ttf 原本就有的 index 放出來而已,這個引數的用途有兩個。 第一個是在使用 .ttc 字型的時候指定要用集合內的哪個字型 比如說在打開 mingliu.ttc 的時候 指定 0 會拿到定寬的細明體 指定 1 會拿到比例間距的新細明體。 第二個是在使用 .fon 字型的時候會拿到哪種點陣圖 比如說在使用 Dina prgoramming font [http://0rz.tw/972mS] 的時候 0~3 分別對應 8 點大小的標準、斜體、粗體、粗斜體 4~7 分別對應 9 點大小的標準、斜體、粗體、粗斜體等等。 > python.event.set_im_flip(bool) > python.event.get_im_flip() > python.event.set_im_pos(pos) 這三個就是 IME 的重頭戲了! 呼叫 set_im_flip(1) 之後 IME 組字視窗在 pygame SDL 主視窗描繪完之後會跟著重繪一次 顯示在 pygame SDL 主視窗上面! 同時用 set_im_pos() 可指定 IME 組字視窗「左上角」在 pygame SDL 視窗內的相對位置 get_im_flip() 當然是取得目前重繪狀態的時候用的。 從輸入法收到的資料則如下圖所示: http://mail.cs.nchu.edu.tw/~s9256043/070207-zhinput.png
中間有許多 key = 0、unicode 沒內容的 KeyDown 事件 這些是被 IME 處理掉的按鍵; 輸入完成之後則有一個 key = 0、unicode 是組字結果的 keyDown 事件 (那邊顯示的碼是「中文輸入」)。 值得注意的是切換 IME 的組合鍵 (ctrl+space 按下放開)、 輸入完畢之後的輸入鍵 (之後緊接的 key = 13, unicode = u'\r') 要自己想辦法處理掉。 下面這是改好的 eventlist.py 測試檔,全螢幕模式並支援輸入法 輸入法組字視窗會跟著滑鼠游標移動: http://mail.cs.nchu.edu.tw/~s9256043/eventlist.py 您可以輸入一段文字但不確認 (按下 Enter),然後在這個狀態下移動滑鼠試試看 ... ;) == 最後還是要感謝 SDL-IM 的作者!小弟來去寫「原本想寫的東西」了 ... (嘿嘿) --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.44.151
1F:推 yoco315:好厲害 @@" 10/28 06:12







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP