Python 板


LINE

这几天在写GUI 用的是wxPython,之前一直没碰过wxWidget的玩意儿 这次第一次玩,没想到已经成长到这种地步了 比我想像中的还来得丰富和好用太多了 该有的全都很齐全,而且都很好用,更重要的是全都是跨平台的 还是原生的介面 相较之下MFC像是跛脚的老太婆 要什麽没什麽 囧 不能跨平台 上手也很快,一开始,我所有介面都是用程式码生成 当视窗渐渐扩张,我发现我在折磨我自己= = 这很痛苦,用程式写介面 "当一样东西一直改变、不停的改变,表示他们必需成为资料而非程式码" 这是我最近学到的心得,於是我就想这样的东西应该是要和程式码分离的才对 然後就开始寻找设计GUI的IDE,在我试遍了各种五花八门的GUI 不是简单过度,不然就是很难用 最後我找到两款最好用的 http://www.anthemion.co.uk/dialogblocks/ 一款是DialogBlocks,这是商业软体 展示版有限制,例如一个Window最多只能有30个元素 一开始我只找到这个,为了这个该死的限制我把视窗拆成好几个部份 然後再用程式把它们组合起来 http://wxformbuilder.org/ 最後,我终於找到合我胃口的软体 Open source的 wxFormBuilder,几乎该有的都有 感觉和DialogBlocks很类似,而且没有该死的限制 很看好这一套 不过,他们产生的程式码都是C++,所以我用另一种方式来组合我的wxPython 使用XRC XRC是wxWidget的资源档格式,GUI可以用这种档案来表示,而wxWidget也有提供方式 来载入这些XRC档 res = xrc.XmlResource(os.path.join('xrc', 'frames.xrc')) 这样就可以载入xrc档 接着是载入Frame或Dialog之类的 self.mainFrame = self.res.LoadFrame(parent, 'mainFrame') 还有载入某个Frame里的control applyChangeButton = xrc.XRCCTRL(self.mainFrame, 'applyChangeButton') 这样一来介面设计的工作就可以从程式码里抽离开来 然而,LoadXXXX是载入整个window的instance,如果你想继承它,这就是个问题 为此wxPython提供一种二阶段载入的方式来处理这个问题 class View(wx.Frame, ViewBase): def __init__(self, parent, res=None): self.res = res or xrc.XmlResource(os.path.join('xrc', 'frames.xrc')) pre = wx.PreFrame() self.res.LoadOnFrame(pre, parent, 'mainFrame') self.PostCreate(pre) 用LoadOnXXXX配合PreXXXX和PostCreate的方式来载入xrc 上面提到的资料都可以在wxPython的wiki里找到 如你所见我用的是MVC的架构来写我的GUI,虽然事件要手动绑有些脑人 不过至少已经比全手动轻松了很多,wxPython感觉很不错 用起来很顺手 赞 :D 以上 -- 财报分析王 http://victorlin.serveftp.org/stock/ 程式设计教学 http://victorlin.serveftp.org/programming/ VICTOR工作室 http://www.kinmen.info/vic/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.64.211
1F:→ rexrainbow:我是用wxGlade来做gui的雏形 08/27 18:56
2F:→ StubbornLin:那个我也用过 太阳春 不好用 试试WxFB 超赞 XD 08/27 20:05
3F:→ rexrainbow:thx 我试试看 08/27 20:45
4F:推 guteres:可以用Boa来做看看 08/28 12:22
5F:→ guteres:算是蛮完整的wxpython IDE 08/28 12:22
6F:推 huggie:资源档的观念是什麽? 09/13 15:40
7F:→ huggie:GUI code 可以建立成资源档再读近来? 09/13 15:40
8F:推 ewn:是建立成xml描述gui的档案,类似.net的xaml 09/14 11:18







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

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

TOP