pyqt

畢設(shè)題目是有限狀態(tài)機在游戲AI中的應(yīng)用,其實整個狀態(tài)機模型并不復(fù)雜,核心代碼也就python 100行左右的量,做了個螞蟻和蜘蛛的場景,整個小游戲也就500行代碼,考慮到太簡單了,所以后面又給自己加了個任務(wù):用圖形界面編輯狀態(tài)。因為之前沒接觸過GUI,最多就是用過公司的UI編輯器,對于GUI的實現(xiàn)并不了解,所以感覺還是挺有挑戰(zhàn)的,因為代碼是用python寫的,所以選擇pyqt為學(xué)習(xí)的對象。


介紹

pyQT是python語言的GUI的解決方案之一

PyQt包含了大約440個類型、超過6000個的函數(shù)和方法。

“QtCore”模塊主要包含了一些非GUI的基礎(chǔ)功能,包含事件循環(huán)與Qt的信號機制。此外,還提供了跨平臺的Unicode、線程、內(nèi)存映射文件共享內(nèi)存、正則表達式和用戶設(shè)置。

“QtGui”模塊包含了大多數(shù)的GUI類型。包含按鈕、文本框、列表等常見控件,還包含了基于MVC設(shè)計模式的列表、表格、樹型控件。同時還提供了一個能夠容納成千上萬個元素的畫布控件,其中可以放置各種控件和圖形。此外,還可以QtGui還支持界面動畫與界面狀態(tài)機編程。

“QtNetwork”模塊可以用于編寫非阻塞式的UDP、TCP程序。還包含了DNS、HTTP與FTP的客戶端。

“QtOpenGL”模塊允許Qt程序使用OpenGL渲染3D圖形在,而且不必大量更改代碼。

“QtSql”模塊支持多種SQL數(shù)據(jù)庫。包括sqlite、ODBC、MySQL、PostgreSQLOracle。還提供了一個基于MVC模式的數(shù)據(jù)模型,與QtGui的的表格控件配合使用。

“QtXml”包含一個XML解釋器,同時支持SAXDOM兩種編程方式。

“QtWebkit”與“QtScript”兩個子模塊支持WebKitEMCAScript腳本語言

“Phonon”子模塊支持高級的多媒體編程。包含音頻播放器、視頻播放器與聲效處理。

“uic”子模塊能夠?qū)t的窗體文件轉(zhuǎn)換為Python代碼,能夠即時讀入窗體文件并且顯示出來。它依賴于QtXml模塊?!癚Scintilla”子模塊包含一個基于Scintilla的文本編輯器控件,Eric IDE使用它作為代碼編輯器?!癚tMultimedia”提供了底層的多媒體支持,現(xiàn)在多數(shù)開發(fā)者改用Phonon模塊?!癚tSvg”支持SVG 1.2 Tiny的靜態(tài)標準,用于顯示與保存SVG格式的圖形。

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

首先安裝pyQT,https://riverbankcomputing.com/software/pyqt/download,我選擇的python2.7的版本

還好有binary的版本,我是在pc上安裝的,以前記得下python的數(shù)據(jù)庫相關(guān)庫折騰了好久。安裝后,直接開始!


可見Pyqt的使用還是很簡單的,首先創(chuàng)建一個applicaion的實例,然后創(chuàng)建組件,讓組件show,最后application進入循環(huán)。想來application里面應(yīng)該會做窗口初始化等相關(guān)操作,本來想看看源碼,結(jié)果發(fā)現(xiàn)似乎并不開源~~~~

然后不可能這樣手寫界面的,qt designer實現(xiàn)拖拽完成界面的方式。我下載的qt-opensource-windows-x86-msvc2010-5.5.1這個版本,700多M。



界面很友好,左邊的組件也很多,保存后輸出一個UI文件,用記事本打開,其為xml格式:


還是很清晰的,把其解析為python文件要用到uic這個庫,如下:


效果如下:


看了下代碼化的輸出,如下,可以發(fā)現(xiàn)還是很清晰的,至少比我司的代碼化清晰多了,setupUi是創(chuàng)建設(shè)置各種組件,retranslate設(shè)置值


其實一直想學(xué)習(xí)解析這一塊,也就是代碼化,奈何每次這種地方都給出“難看”,代碼一大堆,注釋又很少,取名也很怪異。。。。。



麻蛋,突然不知道怎么下手,比如我想實現(xiàn)拖拽功能,designer只能編輯個列表框,然后觸摸點擊這些還是得深入了解這個庫才行,那樣的話還不如直接做在游戲里。在網(wǎng)上找了找答案,知乎輪子哥建議直接做在游戲里,我也慫了,因為自己本來目的就是想學(xué)學(xué)代碼化,所以還是妥協(xié)了吧~~~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 信號和槽(Signals and Slots) Qt庫第一個認識到在幾乎所有情況下,程序員不需要或甚至不想知道所有...
    珞珈村下山閱讀 10,146評論 0 23
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,833評論 6 427
  • 背景 最近的一個項目中,需要在Mac系統(tǒng)下開發(fā)桌面應(yīng)用,網(wǎng)上大概搜索了下Mac的APP開發(fā),發(fā)現(xiàn)Mac提供的原生開...
    Darylzhang閱讀 4,702評論 3 3
  • GitHub 上有一個 Awesome - XXX 系列的資源整理,資源非常豐富,涉及面非常廣。awesome-p...
    若與閱讀 19,321評論 4 417
  • (引子)續(xù) 讀絕世武功博文,情不自禁的開始評論留言。當時的武學(xué)QQ群人數(shù)還少,群主每天關(guān)注留言動態(tài),很快進入了武學(xué)...
    木木木俠閱讀 230評論 0 0

友情鏈接更多精彩內(nèi)容