pyqt5之簡單窗口的建立

   在學完tkinter後,發現tkinter在佈局方面特別的不方便(Tkinter資料:http://effbot.org/tkinterbook/tkinter-index.htm),
所以學習pyqt5,以前用tkinter寫了一個簡單的python入門教程的exe,基本都是面向過程的編程思想,
不多將函數式編程思想和麪向對象的思想,在學習pyqt5的過程當中,但願培養面向對象編程的思想!
關於pyqt5的學習主要參考下面的教程,部分知識及代碼至關因而對PyQt5 tutorial的總結!
  http://zetcode.com/gui/pyqt5/introduction/

.pyqt5各個模塊功能
QtCore 模塊包含了非GUI的功能設計。
這個模塊被用來實現時間,文件和目錄,不一樣數據類型,流,URL,mime類型,線程和進程。
QtGui 模塊包含的類用於窗口化的系統結構,事件處理,2D繪圖,基本圖形,字體和文本。
QtWidgets 模塊包含的類提供了一套UI元素來建立經典桌面風格用戶界面。
QtMultimedia 模塊包含的類用於處理多媒體內容和連接攝像頭和無線電功能的API。
QtBluetooth 模塊包含的類用於掃描藍牙設備,而且和他們創建鏈接互動。
QtNetwork 模塊包含的類用於網絡編程,這些類使TCP/IP和UDP客戶端/服務端編程更加容易和輕便。
QtPositioning 模塊包含的類用於多種可得到資源的位置限定,包含衛星定位,Wi-Fi,或一個文本文件。
Enginio 模塊用於解決客戶端訪問Qt雲服務託管。
QtWebSockets 模塊包含的類用於解決WebSocket通訊協議。
QtWebKit 包含的關於瀏覽器的類用於解決基於WebKit2的支持庫。
QtWebKitWidgets 模塊包含的關於WebKit1的類基本解決瀏覽器使用基於QtWidgets應用問題。
QtXml 模塊包含的類用於解析XML文件。這個模塊提供SAX和DOM API解決方法。
QtSvg 模塊提供類用於顯示SVG文件內容。Scalable Vector Graphics (SVG) 是一種語言,
XML來描述二維圖形和圖形應用程序。
QtSql模塊提供類驅動數據庫工做。
QtTest 模塊包含了方法提供PyQt5應用的單元測試

. PyQT4 and Pyqt5 fifferences
不兼容pyqt4, 模塊被改寫,新模塊的引入

.簡單窗口的創建
沒有父類的組件是頂級窗口。
見例子

.關閉窗口
QPushButton(string text, QWidget parent = None)
text參數是將顯示在按鈕中的內容。parent參數是一個用來放置咱們按鈕的組件

qbtn.clicked.connect(QCoreApplication.instance().quit)
PyQt5中,事件處理系統由信號&槽機制創建。若是咱們點擊了按鈕,信號clicked被髮送。
槽能夠是Qt內置的槽或Python 的一個方法調用。QCoreApplication類包含了主事件循環;
它處理和轉發全部事件。instance()方法給咱們返回一個實例化對象。
注意QCoreAppli類由QApplication建立。點擊信號鏈接到quit()方法,將結束應用。
事件通訊在兩個對象之間進行:發送者和接受者。發送者是按鈕,接受者是應用對象


  1 import sys
  2 from PyQt5.QtWidgets import (QWidget, QToolTip,
  3     QPushButton, QApplication)
  4 from PyQt5.QtGui import QIcon
  5 from PyQt5.QtGui import QFont
  6 from PyQt5.QtCore import QCoreApplication
  7 
  8 # ----------------------------------------------#
  9 # 簡單pyqt5
 10 # ----------------------------------------------#
 11 
 12 
 13 def create_ui():
 14     app = QApplication(sys.argv)    # 全部pyqt5必須建立一個QApplication對象
 15 
 16     w = QWidget()   # 沒有父類的widget將被做爲窗口使用
 17     w.resize(250, 150)  # 大小
 18     w.move(300, 300)    # 起始座標
 19     w.setWindowTitle('GUI')  # 標題
 20     w.show()
 21     # 應用進入主循環。在這個地方,事件處理開始執行。
 22     # 主循環用於接收來自窗口觸發的事件,而且轉發他們到widget應用上處理。
 23     # 若是咱們調用exit()方法或主widget組件被銷燬,主循環將退出。
 24     # sys.exit()方法確保一個不留垃圾的退出。
 25     # 系統環境將會被通知應用是怎樣被結束的
 26     sys.exit(app.exec_())
 27 
 28 
 29 # ----------------------------------------------#
 30 # pyqt5修改顯示圖標
 31 # ----------------------------------------------#
 32 class Example1(QWidget):
 33 
 34     def __init__(self):
 35         super().__init__()
 36         # super()方法返回了父類對象並調用了父類的構造方法
 37         self.__init_ui()
 38 
 39     def __init_ui(self):
 40 
 41         self.setGeometry(300, 300, 300, 220)
 42         self.setWindowTitle('GUI')
 43         self.setWindowIcon(QIcon('f.ico'))
 44 
 45         self.show()
 46 
 47 # ----------------------------------------------#
 48 # pyqt5顯示提示框
 49 # ----------------------------------------------#
 50 
 51 
 52 class Example2(QWidget):
 53 
 54     def __init__(self):
 55         super().__init__()
 56         self.__init_ui()
 57 
 58     def __init_ui(self):
 59 
 60         # 設置提示框的字體和大小
 61         QToolTip.setFont(QFont('SansSerif', 20))
 62 
 63         # 用於顯示組件的提示框
 64         self.setToolTip('This is a <b>QWidget</b> widget')
 65 
 66         # 建立一個按鍵
 67         btn = QPushButton('Button', self)
 68 
 69         # 爲按鍵建立提示框
 70         btn.setToolTip('This is a <b>QPushButton</b> widget')
 71 
 72         # setHint()方法給了按鈕一個推薦的大小
 73         btn.resize(btn.sizeHint())
 74         btn.move(50, 50)
 75 
 76         self.setGeometry(300, 300, 300, 200)
 77         self.setWindowTitle('Tooltips')
 78         self.show()
 79 
 80 # ----------------------------------------------#
 81 # 關閉窗口
 82 # ----------------------------------------------#
 83 
 84 
 85 class Example3(QWidget):
 86 
 87     def __init__(self):
 88         super().__init__()
 89 
 90         self.__init_ui()
 91 
 92     def __init_ui(self):
 93         btn = QPushButton('Quit', self)
 94         btn.clicked.connect(QCoreApplication.instance().quit)
 95         btn.resize(btn.sizeHint())
 96         btn.move(50, 50)
 97 
 98         self.setGeometry(300, 300, 250, 150)
 99         self.setWindowTitle('Quit button')
100         self.show()
101 
102 # 測試簡單的建立ui
103 
104 
105 # create_ui()
106 
107 app = QApplication(sys.argv)
108 
109 # pyqt5修改顯示圖標
110 # ex = Example1()
111 
112 # pyqt5顯示提示框
113 # ex1 = Example2()
114 
115 # pyqt5退出命令,理解信號與槽
116 ex2 = Example3()
117 sys.exit(app.exec_())
相關文章
相關標籤/搜索