WindowsMobile下Python和VensterCE开发工具的安装、环境搭建

作者:小菜 更新时间:2025-03-16 点击数:
简介:前往qq2011官方正式版专题 本文主是在Windows Mobile下Python的安装,以及开发工具VensterCE的安装和环境搭建的介绍,比较初级的内

【菜科解读】

前往qq2011官方正式版专题

本文主是在Windows Mobile下Python的安装,以及开发工具VensterCE的安装和环境搭建的介绍,比较初级的内容,希望对和我一样的PPC & Python新手有些帮助。

1、首先下载PythonCE安装程序和源码包 下载地址:http://sourceforge.net/projects/pythonce/files/ 在这个页面中,找到 “pythonce”-“Python-2.5-20061219”的目录,这里我们下载的是2.5版本,已经包含ctypes了。

它列出的好几个文件可供下载,我在这里只使用 PythonCE-25-20061219.PPC2003_ARM.CAB (Python的PPC安装程序)和 PythonCE-2.5-20061219-source.zip (Python2.5的源码包),这二个文件,其它的dev.zip和patch.zip看你的需要下载,这里不多做介绍。

2、安装Python (1)将 PythonCE-25-20061219.PPC2003_ARM.CAB 下载至你的PPC,进行安装,安装在SD卡比较好。

(2)将 PythonCE-2.5-20061219-source.zip 下载至你的PPC中,并将其中的文件解压到 Python 安装目录下,如果有覆盖提示框弹出,则全部覆盖。

(当然,你可以有选择的对需要的文件进行解压,不过Lib文件夹是不能省的) 3、下载VensterCE VensterCE是一个不错的PPC下的Python开发IDE,可以进行python源码的编辑、调试、浏览类等等,支持语法高亮显示等功能,相当不错。

下载地址:http://sourceforge.net/projects/vensterce/files/ 在这个页面上,找到“vensterce”-“vensterce-beta-2”,下载 vensterce-beta-2.zip 压缩包,(虽然目前有beta-3可供下载,不过我在PPC上测试时不能用,所以还是下载beta-2)。

4、安装VensterCE 具体的安装方法如下:把Vensterce-beta-2.zip下载到PPC 将压缩包内的 venster 目录复制到 Python安装目录下的 Lib 目录下 将压缩包内的 shared\Andale_Mono.ttf 复制到 Windows\Fonts 目录下 将压缩包内的 shared\SciLexer.dll 复制到 Python 的安装目录下 将压缩包内的 pyceide 目录复制到任意位置,双击pyceide\low-res\pyceide.py 运行,OK 接下来就可以利用 VensterCE 来编写 python代码和调试了。

WindowsMobile,下,Python,和,Venst

雍正有哪三大心腹重臣?最后分别下场如何

的历录得非常详细,但凡有一点知名度的人,都无一例外出现在《清史》上,其中,、、这三位的记录可以说是占了很大一个比重,很少朝代能有三个皇帝连续被大篇幅记载的。

今天小编要聊的是雍正的得力心腹,也是他敬重的三位督抚重臣。

因为有雍正在背后撑腰,他们三位的处事作风也是让人不得不钦佩,令朝中大臣又敬又怕。

那么,这三位心腹重臣是谁?他们最后的下场又是怎样呢? 第一位大臣是鄂尔泰,此人单从名字上来看就不简单。

他可以算得上是神童,六岁读四书,八岁写作,二十岁中举,二十一岁袭佐领世职,充任侍卫,他开始担任的正牌官职是五品内务府外郎。

但是就在这个小官位上,他都敢不给雍正面子,在雍正还未继位的时候派人去内务府取钱财时,他不仅没有给,还训斥了雍正派过去的王府管家,这种魄力也着实让人佩服。

不过,鄂尔泰毕竟是个文人,在朝中,虽然有雍正的庇护但是他依旧公事公办,刚正不阿,雍正一直对他信任有加。

鄂尔泰于乾隆十年(1745年)病逝,享年六十六岁,当时乾隆亲临丧所致祭,谥文端,配享太庙,入祀京师贤良祠。

十一年之后,因受门生胡中藻一案牵连,鄂尔泰被撤出贤良祠。

第二位是田文镜。

田文镜靠着自己的努力一步一步从监生走到了巡抚,凭借政绩得到了雍正的重用,而他也借着宠爱更加严厉苛刻,历史上他清廉正直,做事干练,有人写给雍正弹劾他的文书也是多到可以把他盖起来,他的位置却始终岿然不动,由此可以看出他在朝中是有多么得宠。

田文镜还曾经隐匿河南水灾,但是雍正仍然包容了他。

田文镜于雍正十年(1732年)十一月病死,享年七十二岁,谥端肃,一度入祀河南贤良祠,不过在乾隆中后期,田文镜其墓不慎被当地守陵大臣夷平。

最后一位就是李卫。

有人说这个李卫大字不识几个,甚至连官职都是买来的,但是他可是一个跨越康熙雍正乾隆三个朝代的大臣,尤其是他在雍正时期的天恩浩荡。

李卫做事喜欢大声骂人,拍着桌子翘着腿,一副我怕谁的模样,有一个绰号叫“江南总捕头”。

他也是和前两位大臣一样,清廉正直,只不过他的处事方式更加简单粗暴,看谁不顺眼就骂谁,朝中也没几个人敢跟他叫板,可谓是嚣张至极,李卫不仅在朝中嚣张,在江湖上也建立了巨大的威望,可谓是黑白通吃。

最重要的是他一生都是以自己的方式而活,过得逍遥自在,可惜五十一岁时就因病去世,乾隆将其入祀贤良祠。

这三位雍正朝的重臣生前都非常风光,死后亦得以光宗耀祖,比之嚣张跋扈一时落得赐死的好得太多,他们是大臣中的典范,所以称为清朝统治者大力宣传的人臣楷模。

不过,相比鄂尔泰和田文镜去世后或被撤出贤良祠或陵墓被夷平,李卫也算是彻彻底底的人生赢家了。

随机文章小偷偷走蒙古高僧木乃伊,过边界被抓(200岁肉身不腐)惊现2017年广州不明飞行物,小蛮腰和高速路上多地出现太阳内部是聚变还是裂变,氢元素聚变成氦/未来或被木星取代太阳系为什么只有地球有生命,地球特殊进化过程使生命诞生雪花是什么形状,美丽的雪花形状各异/一般不会超过六角形

基于jquery级联的下拉插件

var dataToOption = function(data, op) { var d = [], vs = [], hasFilter = op.filter && $.isFunction(op.filter); $.each(data, function(i, v) { if(!hasFilter || (hasFilter && op.filter(v, i))) { if($.inArray(v[op.dataMap.value], vs) == -1) { d.push($.extend({}, v)); vs.push(v[op.dataMap.value]); if(op.order) { var sp = op.order.split(‘ ‘), col = sp[0], sort = sp[1].toLowerCase() == ‘asc‘ ? 1 : -1; d.sort(function(a, b) { if(a[col] > b[col]) { return sort; } else if(a[col] ‘ + v[‘text‘] + ‘‘; return _ops; var createGroup = function(group, options) { return ‘‘ + options; if(op.preValue || op.preText) { ops += createOption({‘value‘: op.preValue, ‘text‘: op.preText}); if(gps[missGroup] != undefined) { ops += createOption(gps[missGroup]); delete gps[missGroup]; if(op.groupSort == ‘desc‘) { gps[‘keys‘].sort().reverse(); } else if(op.groupSort == ‘asc‘) { gps[‘keys‘].sort() $.each(gps[‘keys‘], function(i, v) { ops += createGroup(v, createOption(gps[v])); return ops; var mapData = function(data, map) { $.each(data, function(i, v) { $.each(map, function(j, k) { if(v[j] == undefined) { data[i][j] = v[k] == undefined ? ‘‘ : v[k]; delete data[i][k]; return data; var groupData = function(data) { var gps = {}; gps[‘keys‘] = []; var pushData = function(group, item) { if(gps[group] == undefined) { gps[group] = []; gps[group].push(item); var pushKey = function(key) { if($.inArray(key, gps[‘keys‘]) == -1) { gps[‘keys‘].push(key); $.each(data, function(i, v) { if(v[‘group‘]) { pushKey(v[‘group‘]); pushData(v[‘group‘], v); } else { pushData(missGroup, v); return gps; $.fn.fillselect = function(urlOrData, options) { return this.each(function() { var $t = $(this), op, dataReadyCallback, ajaxXHR = null; op = $.extend(true, {}, defaultOptions, options); $t.data(‘fillselectOptions‘, op); if(op.before && $.isFunction(op.before)) { op.before.apply($t); dataReadyCallback = function(data) { $t.html(dataToOption(data, op)); if(op.defaultValue) { $t.val(op.defaultValue); if(op.after && $.isFunction(op.after)) { op.after.apply($t); $t.trigger(‘change‘); if(typeof urlOrData == ‘string‘) { if(ajaxXHR) { ajaxXHR.abort(); ajaxXHR = $.ajax({ ‘url‘: urlOrData, ‘type‘: op.usePost ? ‘post‘ : ‘get‘, ‘data‘: op.params, ‘dataType‘: ‘json‘, ‘success‘: function(data) { ajaxXHR = null; if(data.status == ‘200‘) { dataReadyCallback(data.data || []); ‘error‘: function() { ajaxXHR = null; } else { dataReadyCallback(urlOrData); $.fn.chainselect = function(target, urlOrData, options) { return this.each(function() { $(this).bind(‘change‘, function() { var $t = $(this), op; op = $.extend(true, {}, defaultOptions , options); op.params[$t.attr(‘name‘) || $t.attr(‘id‘)] = $t.val(); op.params[‘id‘] = $t.val(); if($t.val() != $t.data(‘fillselectOptions‘).preValue) { $(target).fillselect(urlOrData, op); } else { op.after = null; $(target).fillselect([], op);})(jQuery);此段代码实际上包含了两个jq插件,第一个是fillselect用于填充select,支持data或url(ajax)的方式;第二个是chainselect用于级联select。

下面就详细介绍一下这段代码:var defaultOptions = { after: null, before: null, usePost: false, defaultValue: null, filter: null, preValue: ‘-1‘, preText: ‘請選擇‘, groupSort: ‘desc‘, order: ‘name asc‘, params: {}, dataMap: {‘text‘: ‘text‘, ‘value‘: ‘value‘, ‘group‘: ‘group‘} };插件的默认参数配置after:select数据载入结束事件callbackbefore:数据载入前事件callbackusePost:ajax请求方式,默认为GETdefaultValue:默认选中的值filter:数据过滤函数,类似jq的grep方法,使用方式也是一样的,第一个参数为value,第二个参数为key或index,当返回值为false即过滤掉该条数据,如:filter: function(v, i) { return v.count > 1; }过滤数据中count属性小于1的数据preValue,preText:初始option的值和文字groupSort:分组optgroup排序方式order:数据的排序方式,排序字段与方向空格隔开params:随ajax请求传递的参数dataMap:数据属性映射,目的提高插件对数据的自适应性,如真实数据是name,id,year,则dataMap: { ‘text‘: ‘name‘, ‘value‘: ‘id‘, ‘group‘: ‘year‘ };如果不使用分组功能,只需保留text和valuemissGroup:缺省分组名;dataToOption:用于将数据转换成option;mapData:将数据转成统一格式;groupData:将数据分组;这段实现逻辑略显冗长,因为实际项目中的需求多变,这个可根据实际需求简化一下代码。

$.fn.fillselect在dataReadyCallback中触发change事件主要目的是使此select的下一级生效;$.fn.chainselect多了一个target参数用于指向下一级的jq选择器。

那么现在来看下怎么使用,需求:厂牌brand->车款kind->车型model,ajax获取的数据格式为{status: 200, data: [{id: 1, name: ‘bmw‘}, {id: 2, name: ‘benz‘}]};车型的数据需要根据year_name分组 $(‘#brand‘).chainselect(‘#kind‘, ‘/request_url‘, { ‘dataMap‘: {‘value‘: ‘id‘, ‘text‘: ‘name‘}, ‘preValue‘: -1, ‘preText‘: ‘選擇/車款‘, ‘params‘: {‘type‘: ‘_cache_kind‘}, ‘before‘: function() { this.attr(‘disabled‘, true); ‘after‘: function() { this.removeAttr(‘disabled‘); ‘defaultValue‘: lastKindId || -1 $(‘#kind‘).chainselect(‘#model‘, ‘/request_url‘, { ‘dataMap‘: {‘value‘: ‘myid‘, ‘text‘: ‘name‘, ‘group‘: ‘year_name‘}, ‘preValue‘: -1, ‘preText‘: ‘選擇/車型‘, ‘params‘: {‘type‘: ‘_cache_model‘}, ‘filter‘: function(v, i) { return $.inArray(v.myid, myids) === -1; ‘before‘: function() { this.attr(‘disabled‘, true); ‘after‘: function() { this.removeAttr(‘disabled‘); $(‘#brand‘).fillselect(‘/request_url‘, { ‘dataMap‘: {‘value‘: ‘id‘, ‘text‘: ‘name‘}, ‘preValue‘: -1, ‘preText‘: ‘選擇/廠牌‘, ‘params‘: {‘type‘: ‘_cache_brand‘}, ‘defaultValue‘: lastBrandId || -1 }); 基于,jquery,级联,的,下拉,插件,基于,jquery

加入收藏
               

WindowsMobile下Python和VensterCE开发工具的安装、环境搭建

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录