Python+Eric+PyQt的安裝配置和第一個程式HelloWorld

來源:互聯網
上載者:User

        今天開始要做一個網路營銷工具,開發需要使用Python+Qt。第一次使用,下面是我整理的具體安裝配置步驟和初次開發詳解。對於每一種開發,我們剛開始都會寫的一個HelloWorld程式。下面在給出環境配置之後,我會講解如何寫第一個程式HelloWorld。

1.安裝說明

(1)python下載安裝

        首先下載python:http://www.python.org/ftp/python/  。這裡有各種版本,大家根據自己的要求下載。

        我選擇的下載是:http://www.python.org/ftp/python/3.2.2/python-3.2.2.msi

        安裝後需要配置環境變數,將python的目錄添加進環境變數path中。如:我的python安裝目錄為“D:\Python27”,則我將“D:\Python27”加入環境變數Path中。

(2)PyQt的下載安裝

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

        一路斷行符號安裝,預設會安裝到python的目錄下。比如我的安裝到了:D:\python27中。

(3)Eric下載安裝

        為:http://eric-ide.python-projects.org/eric-download.html

        eric4是一款python,ruby的IDE,其強大代碼功能,與QT4 的完美結合。使開發圖形介面 的python應用程式變得容易。eric4本身就是用pyqt寫的。所以安裝時之前一定要安裝好python才可以。解壓後,雙擊install.py就開始了。安裝完成後,點擊eric4.bat,就可以運行。第一次安裝完成後,需要做一配置才可以。如果你的軟體沒第一次運行,沒有彈出名為pythonw的configure(配置對話方塊 ),可以通過點擊eric4-configure.bat彈出。

        配置過程如下:

        點擊Editor--Autocompation---勾上所有的對號選框。QScintilla---勾上左右的兩個選框,然後在下面source中,選擇from Document and API files.
        點擊Editor----APIs----勾上Complie APIs Autocompation,然後在Language中,選擇python。點擊下面的Add from installed APIs大按鈕,選擇住需要的.api檔案。最後點擊Compile APIs,幾份鐘後完成。
        此時全部安裝過程就算完成了。

2.第一個HelloWorld程式

(1)運行D:\Python27\eric4.bat啟動程式,或點擊D:\Python27\Lib\site-packages\eric4\eric4.py啟動程式。點擊菜單中Project---New 彈出對話方塊中
       Projcet Name:HelloWorld
       Projcet Type:QT4 GUI
       Projcet Directory:選擇你計劃存放的專案檔目錄。
      點擊OK,會出現版本選擇對話方塊,選擇None。
(2)單擊軟體介面左面的Projcet-Viewer中的第二個選項卡Forms
        在下面空白地區中,右鍵滑鼠--New form... 彈出對話方塊中選擇Dialog,然後OK。給ui檔案起個名字(HelloWorld.ui),儲存後,會自彈出QT4設計視窗,選擇Line Edit ,繪製一個單行文字框,並在右面屬性框中,把objcetName改為LText(名字隨便,你自己方便記住就可以).
        然後繪製一個按鈕並把其名字改為btn1,並把text改為hello。
        在繪製加一個按鈕並把其名字改為btn2,並把text改為exit。
(3)給exit按鈕設計訊號與槽,當點擊它時,就會退出
       點擊視窗右面的(訊號/槽編輯器)中的加號(+),就會出現一條沒有定義過的事件,此時在寄件者選擇btn2(btn2是剛才定義的exit按鈕),訊號中選擇clicked(),接受者中選擇Dialog,槽中選擇close(),然後儲存後關閉設計器。

       下面講解一下“訊號”和“槽”的概念:在PyQt4下,事件處理方面的術語為“訊號”和“槽”,即signal和slot。事件對應訊號signal,而事件的處理函數則為slot槽。PyQt4有一些預定義的slot,我們可以直接用,比如“exit”按鈕的slot,其實就是關閉對話方塊,這個slot已經在PyQt4中有定義了。對於這樣的slot,我們不用單獨寫代碼,在QtDesigner中就可以完成。而對於“hello”按鈕,我們需要自己寫代碼。對於這樣的slot,我們在QtDesigner中不做任何處理,甚至不做定義。那麼在這個例子中,在QtDesigner裡我們只處理“exit”按鈕的單擊事件。這裡“exit”按鈕發出事件訊號;而表單Dialog為事件的接收方,即槽slot,表單會對事件訊號進行處理。
(4)返回到eric介面後,在左右的Forms選項卡中會出現名為HelloWorld.ui的檔案 ,在檔案名稱字右鍵滑鼠,選擇Complie form ,然後點確定。
      點擊Projcet-Viewer下的第一個選項卡Source後,就看見一個名字為Ui_HelloWorld.py的檔案。雙擊這個檔案,然後開啟源 檔案可以看到它的內容,產生了一個Ui_HelloWorld類。Ui_HelloWorld.py是可以單獨啟動並執行。按F2鍵,執行後,就會出現我們剛才設計好的程式。到此一個python程式已經成型。點擊hello按鈕沒有任何反應,是因為還沒有對其進行 編碼,但是點擊exit按鈕後,程式退出。

      註:不建議手動修改Ui_DlgHello.py,因為當你每次修改完介面並Complie form之後,會將你之前手動進行的修改給覆蓋掉。
(5)給hello按鈕編碼,其點擊後,在文字框中會出Hello World的文字
        在PyQt4中,介面代碼與事件代碼是分開的,這樣每次改介面不會影響到事件處理的代碼。事件處理要建立一個類,然後在這個新類裡寫事件處理函數。建立類的工作可以交給Eric4來完成。

        具體流程如下:滑鼠右鍵HelloWorld.ui,選擇Generate Dialog Code,設定ClassName,點擊右面的New按鈕。預設就可以。確定之後。在下面的文字框中,可以選擇我們感興趣的事件,Eric4會一併建置事件處理函數的定義。我們這裡選擇btn1下的給第一個 on_btn1_clicked()打上對勾,然後ok。這時在點擊Projcet-Viewer下的第一個選項卡Source,就會多出一個 HelloWorld.py檔案。雙擊開啟這個檔案。在檔案後面就會出現一個剛才產生的btn1按鈕的指令碼。

@pyqtSignature("")def on_btn1_clicked(self):        """       Slot documentation goes here.       """        # TODO: not implemented yet        raise NotImplementedError  

        下面對這段指令碼進行講解:

        注意這個@pyqtSignature(""),自動處理了下面定義的槽slot(事件處理函數)與相對應的訊號signal(事件)之間的關聯。這裡是指,單擊btn1按鈕,就會自動執行這個函數。slot的命名規則就是”on_對象名_訊號名”,如果想添加新的slot,按這個規則來添加函數就行,並且在函數定義語句之前加上@pyqtSignature(""),不用再重建一次HelloWorld.py檔案。
        其實另外一種關聯signal與slot之間的方法是在運行裡綁定,比如按鈕對象btnAbout的clicked訊號的槽是about_clicked函數,那麼在__init__函數中加入這樣一句話:
        PyQt4.QtCore.QObject.connect(self.btnAbout, PyQt4.QtCore.SIGNAL("clicked()"), self.about_clicked)
        那麼單擊按鈕btnAbout時就會執行about_clicked函數。
        兩種方法各有長處。第一種方法簡單,第二種方法對於多個signal使用同一個slot時很有效。

ok,繼續,我們需要把上面的程式碼片段修改為:

@pyqtSignature("")def on_btn1_clicked(self):        self.LText.setText("Hello World")   

然後在源檔案頂部加入Python代碼  

import PyQt4, PyQt4.QtGui, sys  

在底部最後面加入Python代碼  

if __name__ == "__main__":        app = PyQt4.QtGui.QApplication(sys.argv)       dlg = Dialog()       dlg.show()       sys.exit(app.exec_())  

到此第個Python程式設計完成。按F5運行。

註:如果按鈕文本為漢字的話,運行之後,按鈕文本會顯示為亂碼。比如,我們將btn1的文本設定為“你好”,則運行之後,btn1按鈕的文字則顯示為亂碼。

        解決方案一,是把btn1對應的代碼中的("你好")改為(u"你好,PyQt4")就行了。但是這樣更改之後,當重新編譯介面後,之前的修改就會丟失掉。

        這時,我們可以採用方法二(推薦使用這用方式修改),是把Eric菜單中“Settings”中的“Preferences”中的“Python”編碼更改為“utf-8”就可以了。

        PyQt4對中文的支援是很好的。代碼統一使用utf-8編碼,能省去很多麻煩。

---------------------------------------------------------------------------------------------------------------------------

註:最終的HelloWorld.py檔案如下所示:

# -*- coding: utf-8 -*-"""Module implementing Dialog."""from PyQt4.QtGui import QDialogfrom PyQt4.QtCore import pyqtSignaturefrom Ui_HelloWorld import Ui_Dialogimport PyQt4, PyQt4.QtGui, sysclass Dialog(QDialog, Ui_Dialog):    """    Class documentation goes here.    """    def __init__(self, parent = None):        """        Constructor        """        QDialog.__init__(self, parent)        self.setupUi(self)        @pyqtSignature("")    def on_btn1_clicked(self):        """        Slot documentation goes here.        """        # TODO: not implemented yet        #raise NotImplementedError        self.LText.setText("Hello World")              if __name__ == '__main__':       app = PyQt4.QtGui.QApplication(sys.argv)       dlg = Dialog()       dlg.show()       sys.exit(app.exec_())

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.