歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> PyQt4 精彩實例分析

PyQt4 精彩實例分析

日期:2017/3/1 10:18:50   编辑:Linux編程

本實例實現一個"Hello Kitty!"例子,簡單介紹Qt編程的基本流程,以及Qt程序的編繹運行方式,實例效果圖如圖所示。

這是一個簡單的例子,整個對話框只有一個按鈕,單擊該按鈕,對話框關閉,退出程序。

實現代碼如下:

  1. from PyQt4.QtGui import *
  2. from PyQt4.QtCore import *
  3. import sys
  4. app=QApplication(sys.argv)
  5. b=QPushButton("Hello Kitty!")
  6. b.show()
  7. app.connect(b,SIGNAL("clicked()"),app,SLOT("quit()"))
  8. app.exec_()

第1行導入PyQt4.QtGui的所有類及模塊,包括QApplication,所有Qt圖形化應用程序都必須包含此文件,它包含了Qt圖形化應用程序的各種資源,基本設置,控制流以及事件處理等。

第5行新創建了一個QApplication對象,每個Qt應用程序都必須有且只有一個QApplication對象,采用sys.argv作為參數,便於程序處理命令行參數。

第6行創建了一個QPushButton對象,並設置它的顯示文本為“Hello Kitty!”,由於此處並沒有指定按鈕的父窗體,因此以自己作為主窗口。

第7行調用show()方法,顯示此按鈕。控件被創建時,默認是不顯示的,必須調用show()函數來顯示它。

第8行的connect方法是Qt最重要的特征,即信號與槽的機制。當按鈕被按下則觸發clicked信號,與之相連的QApplication對象的槽quit()響應按鈕單擊信號,執行退出應用程序的操作。關於信號與槽機制在本實例最後將進行詳細的分析。

最後調用QApplication的exec_()方法,程序進入消息循環,等待可能輸入進行響應。Qt完成事件處理及顯示的工作,並在應用程序退出時返回exec_()的值。

最後執行程序即可出現上圖所示的對話框,一個簡單的Hello Kitty!例子完成。

信號與槽機制作為Qt最重要的特性,提供了任意兩個Qt對象之間的通信機制。其中,信號會在某個特定情況或動作下被觸發,槽是用於接收並處理信號的函數。例如,要將一個窗口中的變化情況通知給另一個窗口,則一個窗口發送信號,另一個窗口的槽接收此信號並進行相應的操作,即可實現兩個窗口之間的通信。這比傳統的圖形化程序采用回調函數的方式實現對象間通信要簡單靈活得多。每個Qt對象都包含預定的信號和槽,當一某一特定事件發生時,一個信號被發射,與信號相關聯的槽則會響應信號完成相應的處理。

信號與槽機制常用的連接方式為:

connect(Object1,SIGNAL(signal),Object2,SLOT(slot))

signal為對象Object1的信號,slot為對象Object2的槽,Qt的窗口部件都包含若干個預定義的信號和若干個預定義的槽。當一個類被繼承時,該類的信號和槽也同時被繼承。開始人員也可以根據需要定義自己的信號和槽。

信號與槽機制可以有多種連接方式,下圖描述了信號與槽的多種可能連接方式。

1.一個信號可以與另一個信號相連

connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1))

即表示Object1的信號1發射可以觸發Object2的信號1發射。

2.表示一個信號可以與多個槽相連

connect(Object1,SIGNAL(signal2),Object2,SLOT(slot2))

connect(Object1,SIGNAL(signal2),Object3,SLOT(slot1))

3.表示同一個槽可以響應多個信號

connect(Object1,SIGNAL(signal2),Object2,SLOT(slot2))

connect(Object3,SIGNAL(signal2),Object2,SLOT(slot2))

Copyright © Linux教程網 All Rights Reserved