PyQt挖地雷遊戲學習筆記(2)

來源:互聯網
上載者:User

標籤:io   使用   for   檔案   資料   cti   sp   代碼   html   

分析多個檔案組成的原始碼,最好使用協助工具輔助。

我試過Source Navigator 和 Source Insight,感覺後者功能多些,比較好用。

一、程式的組成模組等檔案

這個挖地雷遊戲,主要由2種檔案組成:

1、程式模組

主程式main.py:負責主視窗物件,按鈕和菜單的設定、事件處理、程式初始化、結束等等。

遊戲邏輯模組game_scene.py:負責遊戲規則、棋盤顯示、勝負裁判、記錄得分等等。

“匯入”檔案lib.py:匯入一些通用的模組,其他檔案只需匯入lib.py。

遊戲設定模組setup.py:由菜單開啟的對話方塊,設定棋盤大小和地雷數目。

遊戲記分模組score.py:玩家挖出全部地雷獲勝後,彈出對話方塊,遊戲記分。

預設設定模組config.py:棋盤大小、地雷多少,由其存為預設設定。

2、GUI介面藍圖

主視窗:mainwindow.ui
記分對話方塊:score.ui
設定對話方塊:setup.ui

另外,還有一個預設設定資料檔案config.cfg。

二、程式的GUI初始化

這個挖地雷程式,沒有把介面藍圖ui檔案用pyuic4轉換成py檔案,而是直接使用ui檔案。

在GUI初始設定上,有其明顯特點,與老式PyQt程式不同。這具體表現在以下幾個方面:

1、首先裝載GUI藍圖

在模組中class體外,使用函數 loadUiType(ui_file),先把GUI介面藍圖載入記憶體,

以實現相關具體物件和機制;

各模組在執行個體化、初始化各個class之前,首先做這件事情。如:

main.py模組中的 form, base = loadUiType("mainwindow.ui")

setup.py模組中的 form, base = loadUiType("setup.ui")

score.py模組中的 form, base = loadUiType("score.ui")

2、處理“事件”的方式有所簡化

例如,mainwindow.ui中,有以下功能表項目:

<addaction name="actionAbout_Qt"/><addaction name="action_New"/><addaction name="action_Pause"/><addaction name="action_Full_Screen"/><addaction name="action_Score"/><addaction name="action_Setup"/>

把上述name加上頭、尾:on_  和 _triggered,作為函數名,

並以@pyqtSlot()修飾,在main.py中形成處理“訊號”的“槽”:

@pyqtSlot()def on_actionAbout_Qt_triggered(self):@pyqtSlot()def on_action_New_triggered(self):@pyqtSlot()def on_action_Pause_triggered(self):@pyqtSlot()def on_action_Full_Screen_triggered(self):@pyqtSlot()def on_action_Score_triggered(self):@pyqtSlot()def on_action_Setup_triggered(self):

Qt的“訊號-槽”機制,沒有什麼“逐級上傳”等花頭,簡明實用。

另外,“訊號-槽”的關聯函數connect,只用1個參數,即“槽名”,

與Qt要用4個參數相比,簡化許多。如main.py的class Face中:

scene.changeStatus.connect(self.changeStatus)self.button.clicked.connect(self.me)

並且,一個訊號,可與多個槽關聯。如:

在game_scene.py中定義的訊號

changeStatus =  pyqtSignal(int)

分別與main.py中2個槽changeStatus關聯。一是在上述class Face裡,

二是在class MainWindow裡。

PyQt挖地雷遊戲學習筆記(2)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.