pyqt

毕设题目是有限状态机在游戏AI中的应用,其实整个状态机模型并不复杂,核心代码也就python 100行左右的量,做了个蚂蚁和蜘蛛的场景,整个小游戏也就500行代码,考虑到太简单了,所以后面又给自己加了个任务:用图形界面编辑状态。因为之前没接触过GUI,最多就是用过公司的UI编辑器,对于GUI的实现并不了解,所以感觉还是挺有挑战的,因为代码是用python写的,所以选择pyqt为学习的对象。


介绍

pyQT是python语言的GUI的解决方案之一

PyQt包含了大约440个类型、超过6000个的函数和方法。

“QtCore”模块主要包含了一些非GUI的基础功能,包含事件循环与Qt的信号机制。此外,还提供了跨平台的Unicode线程内存映射文件共享内存正则表达式和用户设置。

“QtGui”模块包含了大多数的GUI类型。包含按钮、文本框、列表等常见控件,还包含了基于MVC设计模式的列表、表格、树型控件。同时还提供了一个能够容纳成千上万个元素的画布控件,其中可以放置各种控件和图形。此外,还可以QtGui还支持界面动画与界面状态机编程。

“QtNetwork”模块可以用于编写非阻塞式的UDP、TCP程序。还包含了DNS、HTTP与FTP的客户端。

“QtOpenGL”模块允许Qt程序使用OpenGL渲染3D图形在,而且不必大量更改代码。

“QtSql”模块支持多种SQL数据库。包括sqliteODBCMySQLPostgreSQLOracle。还提供了一个基于MVC模式的数据模型,与QtGui的的表格控件配合使用。

“QtXml”包含一个XML解释器,同时支持SAXDOM两种编程方式。

“QtWebkit”与“QtScript”两个子模块支持WebKitEMCAScript脚本语言

“Phonon”子模块支持高级的多媒体编程。包含音频播放器、视频播放器与声效处理。

“uic”子模块能够将Qt的窗体文件转换为Python代码,能够即时读入窗体文件并且显示出来。它依赖于QtXml模块。“QScintilla”子模块包含一个基于Scintilla的文本编辑器控件,Eric IDE使用它作为代码编辑器。“QtMultimedia”提供了底层的多媒体支持,现在多数开发者改用Phonon模块。“QtSvg”支持SVG 1.2 Tiny的静态标准,用于显示与保存SVG格式的图形。

by https://zh.wikipedia.org/wiki/PyQt

首先安装pyQT,https://riverbankcomputing.com/software/pyqt/download,我选择的python2.7的版本

还好有binary的版本,我是在pc上安装的,以前记得下python的数据库相关库折腾了好久。安装后,直接开始!


可见Pyqt的使用还是很简单的,首先创建一个applicaion的实例,然后创建组件,让组件show,最后application进入循环。想来application里面应该会做窗口初始化等相关操作,本来想看看源码,结果发现似乎并不开源~~~~

然后不可能这样手写界面的,qt designer实现拖拽完成界面的方式。我下载的qt-opensource-windows-x86-msvc2010-5.5.1这个版本,700多M。



界面很友好,左边的组件也很多,保存后输出一个UI文件,用记事本打开,其为xml格式:


还是很清晰的,把其解析为python文件要用到uic这个库,如下:


效果如下:


看了下代码化的输出,如下,可以发现还是很清晰的,至少比我司的代码化清晰多了,setupUi是创建设置各种组件,retranslate设置值


其实一直想学习解析这一块,也就是代码化,奈何每次这种地方都给出“难看”,代码一大堆,注释又很少,取名也很怪异。。。。。



麻蛋,突然不知道怎么下手,比如我想实现拖拽功能,designer只能编辑个列表框,然后触摸点击这些还是得深入了解这个库才行,那样的话还不如直接做在游戏里。在网上找了找答案,知乎轮子哥建议直接做在游戏里,我也怂了,因为自己本来目的就是想学学代码化,所以还是妥协了吧~~~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • 信号和槽(Signals and Slots) Qt库第一个认识到在几乎所有情况下,程序员不需要或甚至不想知道所有...
    珞珈村下山阅读 9,776评论 0 23
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,425评论 6 428
  • 背景 最近的一个项目中,需要在Mac系统下开发桌面应用,网上大概搜索了下Mac的APP开发,发现Mac提供的原生开...
    Darylzhang阅读 4,480评论 3 3
  • GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广。awesome-p...
    若与阅读 18,595评论 4 418
  • (引子)续 读绝世武功博文,情不自禁的开始评论留言。当时的武学QQ群人数还少,群主每天关注留言动态,很快进入了武学...
    木木木侠阅读 189评论 0 0