Base PyQt4, Simple Web APP Framwork

  长时间以来,一直针对Linux 服务器开发后台程序,每天面对的是黑框框,输出只有日志文件。偶尔需要模拟客户端测试,要么是写几行php代码,在浏览器上点一点,要么是写个小Python脚本在shell中执行一下。写了一些测试用的小脚本以后,越来越钟爱这种脚本测试方式了。想到什么测试case,三下五除二改改脚本就能测了。测试小脚本多多少少也写了十来个了。其实自己Php和Python的底子都不好,只是略懂一二,居然大部分问题都能google一下轻松解决,主要是也不需要使用神马高级特性哈哈。

      最近的项目的测试却让我犯难了,要搞GUI程序!哥身为Linux服务器下C++程序员,向来不屑写GUI,也闲麻烦(也闲自己不太会哈哈)。我们开发了一个基于地图的游戏,现在一是要测试稳定性模拟N个用户随机的移动,二是测试服务器性能,当用户相对集中在地图上某个区域时,服务器的响应效率如何。这个是当前最主要的需求,我们需要搞一个GUI程序显示地图上所有人的移动。设计的方案是将整个地图缩小到只有一屏,把用户显示为一个红点,可以动态的增加用户,还可以实时显示服务器当前各个区域的负载图。除了这个需求外,以前也碰到过一些需要GUI工具的需求,如检查任务定义的excel,检查地图配置的xml的有效性等。这些目前都是通过Web或Flash帮忙做了,但其实这些工具最好是后台程序员维护,毕竟一些限制、检查后台开发是最清楚的。

     于是乎N年来第一次这么想写GUI程序,哥不搞则以,一搞惊人哈哈!即整就整一个通用点的吧!!整理需求如下:

  • 常用的工具程序一般要经常修改,So GUI工具程序一定要用脚本写
  • 使用工具的人大致为开发、策划、运维,知道她们都用神马系统吗?普通青年用window,文艺青年用Mac,二逼青年用Linux,So Gui工具还要跨平台
  • 世界上最容易编写的GUI是神马?我的答案是HTML,大学里尽JB写web了,要是能让哥能用HTML+JQuery,那效率绝对是杠杆的。但是如果直接写Php页面有一些缺陷,一是他不能长期运行,点一下运行一下,二是普通Html+Jquery是不能访问本地文件系统的,更不能自己发起socket连接到服务器。

    经过一二两条,剩下的就是Lua和python了,但是Lua库太少,果断排除。加上第三条,经过艰苦的google加demo测试剩下python +widget、 和 python + Qt。刚开始苦逼的选择了wxpython,普通HTML页面鼓捣几个小时就搞出来了,这时才悲剧的发现塔不支持CSS 和 Javascript,连表单都不支持,我自己给其扩展了一下好不容易支持按钮了,但是不支持javascript太让我不甘心了。So 果断丢弃代码。

    最后PyQt成为我最后的选择,稍微看了一下Qt库,就不禁感叹,这库太JB牛逼了,外国佬揍是牛逼,这么牛逼的库开源出来。Qt中包含了N多方面的封装,其中Webkit就是专门用来渲染HTML的,Chrome、Safari等都是基于webkit引擎渲染,怪不人家能有这么帅的浏览器,人家基础库搞的好,长期技术积累啊。咋没见国人搞神马渲染引擎。这真是造福人类的好东东。我一直认为最牛逼的软件就是QT、Webkit这样的,开发此软件的人牛逼,连使用这些软件的人都觉的能够使用这样牛逼的软件,觉得自己也牛逼。除qt,webkit外,还有mysql、Linux、memcache、gcc 。我见过N过精通Oracle的人牛逼哄哄的样子,Oracle的作者我没见过,应该是更牛逼哄哄吧。

    下面详述一下我的实现:主要基于window平台(注:目前是个普通青年)

1. 安装python

window 下载安装包,一路下一步即可,下载地址python.org,推荐下载python2.7 32位版本,推荐连接

python-2.7.1.zip

linux:yum/apt 一键安装

2. 安装pyqt4

win下下载相应的安装包,注意和python版本对应,推荐下载

PyQt-Py2.7-x86-gpl-4.9-1.exeWindows 32 bit installer

http://www.riverbankcomputing.co.uk/software/pyqt/download

linux yum/apt 或者下载tar包自己安装,二逼青年总是会麻烦一点。

3. 下载偶的示例代码:

svn co https://ffown.googlecode.com/svn/trunk/python

4. 运行

双击main.py即可运行,运行效果图如下,主要包括通过google下载图片的例子、jquery控制按钮例子,javascript通过python访问文件系统例子,url重定向例子,还有一个html5动画的例子。

 

 

5. 框架详解:

要用pyqt实现一个浏览器,最少只需如下几行代码:参见pylib/simple.py

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *

app = QApplication(sys.argv)

web = QWebView()
web.load(QUrl("http://www.cnblogs.com/zhiranok"))
web.show()

sys.exit(app.exec_())

我自己将PyQtWebkit封装到pylib下的ffqt.py

和上面不同的是1我封装了几个函数供Javascript调用。2我默认调用html目录下的index.html文本即可,若要修改GUI只需修改index.html文件即可。

class PythonJS(QObject):url = []__pyqtSignals__ = ("contentChanged(const QString &)")@pyqtSignature("", result="QString")def get_image_url(self):if len(self.url) == 0:search_url = 'http://ffown.sinaapp.com/get_image_url.php'search_ret = eval(urllib.urlopen(search_url).read())self.url = search_retdest = self.url[random.randint(0, 100) % len(self.url)]return dest@pyqtSignature("QString", result="QString")def readfile(self, path):ret = ""try:f = open(path, "r")ret = f.read()f.close()except:ret = "file not exist!" + pathtraceback.print_exc()return ret@pyqtSignature("QString", result="QString")def select_file(self, ext = "*"):ret = QFileDialog.getOpenFileName(None, "", ext, "FileDialog")return re

  这里PythonJS就是为javascript封装的扩展函数库,每个成员方法javascript都可以直接调用,如读取文件内容的readfile在javascript中调用方式为

python.readfile(file_path)

     这样javascript不方便做的如访问文件系统、socket连接、数据库访问等,都可以交个python来做。利用HTML加Jquery很容易写出一个很实用的GUI程序。

     please Try it,欢迎文艺青年、二逼青年、普通青年测试、报bug。

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习核心算法之——贝叶斯方法

1.贝叶斯公式贝叶斯公式已经成为机器学习的核心算法之一,诸如拼写检查、语言翻译、海难搜救、生物医药、疾病诊断、邮件过滤、文本分类、侦破案件、工业生产等诸多方面都有很广泛的应用,它也是很多机器学习算法的基础。在这里,有必要了解一下…

B 站面试官:“啥是重定向?”

三分钟,带你学习和实践域名重定向大家好,我是鱼皮,今天分享 重定向 小知识,以及我在腾讯云云开发中实现域名重定向的实践。孽起之前,我开发了一个编程导航网站,将网站放到了腾讯云云开发上,用云…

比起掉头发,我更怕掉队

程序员是最需要持续学习的职业可能在大家眼中,程序员是一群木讷、思维方式单一的物种,但其实,他们才是思维活跃,时刻保持学习力,不甘落后的一群人。计算机行业每天都会有新的东西出现,程序员们需要关注最新…

刷新mac地址命令_配置好Cisco交换机需要熟悉IOS命令及相关的知识

一、几种配置命令模式switch> 这种提示符表示是在用户命令模式,只能使用一些查看命令。switch# 这种提示符表示是在特权命令模式。switch(config)# 这种提示符表示是全局配置模式switch(config-if)# 端口配置命令模式二、检查、查看命令这些命令是查看当前配置…

WPF 使用FontAwesome字体图标

要搞点小软件,又不想使用图标和图标类库,突然想起FontAwesome,试了一下,还挺方便的,先弄了几个最常用的图标试一下,弄了几个按钮的样式,看一下效果:看一下fontAwesome使用方法:首先从…

从Google Maglev说起,如何造一个牛逼的负载均衡?

Maglev是谷歌为自己的数据中心研发的解决方案,并于2008开始用于生产环境。在第十三届网络系统设计与实现USENIX研讨会(NSDI ‘16)上, 来自谷歌、加州大学洛杉矶分校、SpaceX公司的工程师们分享了这一商用服务器负载均衡器Maglev的…

怎么打包图片_超简单的免费批量图片压缩技巧,只需3步

我们在上传图片的时候,经常会遇到一个问题,那就是图片文件太大,无法上传。那这个时候我们该怎么办呢?我们一般都会想到把图片进行压缩之后,重新上传。那么我们要怎么压缩图片呢?如果图片数量很多&#xff0…

Calendar类

接触java不久,感觉java真的挺好玩的。 Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法…

史上最牛的5次黑客攻击!比电影还刺激!

好莱坞认为,黑客就像是使用计算机的黑魔导士。在电影中,计算机可以炸毁房屋,关闭公路,释放瘟疫还有引发女权运动。也许有人认为,好莱坞的想象力很丰满,但现实是骨感的。他们错了,因为在现实中&a…

优化 .NET Core logging 中的泛型 logger

优化 .NET Core logging 中的泛型 loggerIntro在微软的 logging 组件中&#xff0c;我们可以比较方便的使用泛型 Logger&#xff0c;如&#xff1a;ILogger<Generic> 这样的&#xff0c;但是如果泛型 Logger 的类型是一个泛型类型就会有些问题&#xff0c;具体的泛型参数…

charts漏斗图表_ECharts漏斗图属性与实例介绍

ECharts漏斗图在 ECharts 系列中&#xff0c;漏斗图使用 series[i]-funnel 表示。漏斗图适用于业务流程比较规范、周期长、环节多的流程分析&#xff0c;通过漏斗各环节业务数据的比较&#xff0c;能够直观地发现和说明问题所在。示例&#xff1a;ECharts漏斗图属性type在漏斗图…

原来R语言还有这些不为人知的用处!

开学钜惠已经进行了好些天啦&#xff0c;前两天小天介绍了关于python课程的开学季限时优惠&#xff08;传送门&#xff09;&#xff0c;你以为这样就结束了吗&#xff1f;不不不&#xff0c;还有R语言系列的优惠没讲过呢。接下来&#xff0c;小天来详细说明一下&#xff01;19月…

记一次 .NET医院公众号程序 线程CPU双高分析

一&#xff1a;背景 1. 讲故事上周四有位朋友加wx咨询他的程序出现 CPU 线程 双高的情况&#xff0c;希望我能帮忙排查下&#xff0c;如下图&#xff1a;从截图看只是线程爆高&#xff0c;没看到 cpu 爆高哈????????????&#xff0c;有意思的是这位朋友说他&#…

谷歌搜索,揭示人性最黑暗的5个秘密

《卫报》网站发布文章指出&#xff0c;我们能够从我们在网上问的问题获得对自己更多的了解呢。美国数据科学家塞斯斯蒂芬斯-大卫多维茨&#xff08;Seth Stephens-Davidowitz&#xff09;通过分析谷歌的匿名搜索数据&#xff0c;揭示了我们最黑暗的一些秘密&#xff0c;揭露了我…

通过Dapr实现一个简单的基于.net的微服务电商系统(七)——一步一步教你如何撸Dapr之服务限流...

在一般的互联网应用中限流是一个比较常见的场景&#xff0c;也有很多常见的方式可以实现对应用的限流比如通过令牌桶通过滑动窗口等等方式都可以实现&#xff0c;也可以在整个请求流程中进行限流比如客户端限流就是在客户端通过随机数直接返回成功失败来决定是否发起请求。也可…

(转)完美画质 3D游戏反锯齿技术浅析 .

完美的画面已经离我们不再遥远——反锯齿技术浅析 不管现今的游戏画面有多完美&#xff0c;人物和环境有多真实&#xff0c;但游戏画面的构成的主要方式仍然没有得到改善&#xff1a;一帧画面由成千上万像素构成。这意味着物体多边形的轮廓最终是锯齿状的图形。所以画面质量不可…

业余时间学数据分析,如何快速上手

广泛被应用的数据分析谷歌的数据分析可以预测一个地区即将爆发的流感&#xff0c;从而进行针对性的预防&#xff1b;淘宝可以根据你浏览和消费的数据进行分析&#xff0c;为你精准推荐商品&#xff1b;口碑极好的网易云音乐&#xff0c;通过其相似性算法&#xff0c;为不同的人…

64位Visual Studio 2022,微软在下一盘大棋!

有没有跟我一样奇怪过&#xff0c;都2021年了&#xff0c;用的还是VS2019&#xff1f;原来微软是憋大招去了&#xff0c;4月18号Amanda的一篇博文宣布了一则重磅消息——Visual Studio 2022 首个预览版将于今年夏季发布 &#xff0c;并且终于成为万众期待的 64 位版&#xff01…

【重磅】MIT发布2018年“全球十大突破性技术”

“有些技术已经应用多年&#xff0c;有些则是意外之喜。无论如何&#xff0c;以下是我们认为将在未来的几年对我们的工作和生活产生巨大影响的技术突破。”北京时间2018年2月21日&#xff0c;《麻省理工科技评论》揭晓了2018年“全球十大突破性技术”&#xff0c;这份全球新兴科…

[Stardust]星尘配置中心

在分布式系统开发中&#xff0c;配置中心必不可少。在中通几年时间里&#xff0c;为了配合大数据计算平台&#xff0c;统一管理数百个微小应用&#xff0c;设计了一套轻量级配置中心。星尘配置中心在其理念基础上改进&#xff0c;针对中小团队而全新设计&#xff01;源码&#…