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灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP