1. 程式人生 > >PyQt5學習筆記2-GUI編程基礎-2

PyQt5學習筆記2-GUI編程基礎-2

窗口 tle 就會 三種 math img focus pen 分享

通過三個簡單軟件程序分析,找到PyQt GUI編程的感覺!

(源自《Rapid GUI Programming with Python and Qt》,本文將示例由Qt4改成Qt5版本)

軟件2:計算器

 該示例是一個對話框應用程序,即沒有菜單欄、工具條、狀態欄。
 軟件功能:
   1.用戶輸入數學表達式,按回車鍵後,表達式及結果就會顯示出來。
   2.如果輸入的表達式無效,軟件會顯示錯誤信息。

軟件運行效果圖

技術分享圖片

 1 ‘‘‘
 2 一個計算器
 3 該示例是一個對話框應用程序,即沒有菜單欄、工具條、狀態欄。
 4 軟件功能:
 5 1.用戶輸入數學表達式,按回車鍵後,表達式及結果就會顯示出來。
 6 2.如果輸入的表達式無效,軟件會顯示錯誤信息。
 7 ‘‘‘
 8 
 9 import sys
10 from math import *  # 輸入的表達式可使用math模塊中所有數學函數,如sin、cos
11 from PyQt5.QtWidgets import *   # 使用此模塊中的QWidget,QTextBrowser、QLineEdit
12 
13 # 通過QDialog子類化的方法創建一個頂級窗口
14 # PyQt中的所有控件都是繼承自QWidget, 如:QDialog,QLineEdit
15 class Form(QDialog):
16 
17     def __init__(self):
18         super().__init__()   # 初始化窗口
19 
20         # 創建兩個窗口控件
21         self.browser = QTextBrowser()
22         self.lineedit = QLineEdit("Type an expression and press Enter")
23         self.lineedit.selectAll()
24 
25         # 創建一個垂直布局管理器QVBoxLayout
26         # PyQt提供了三種布局管理器:垂直布局/水平布局/網格布局,它們可以彼此嵌套。
27         # 使用了布局管理器後,各種控件會隨著窗口的大小改變自動調整。
28         layout = QVBoxLayout()
29         layout.addWidget(self.browser)
30         layout.addWidget(self.lineedit)
31         self.setLayout(layout)
32 
33         self.lineedit.setFocus()
34 
35         # 信號(returnPressed)連接到槽(updateUi)
36         # 當用戶在lineedit上按下回車鍵時,retrunPressed信號就會發射出來,
37         # 因有connect , 此時會調用updateUi().
38         self.lineedit.returnPressed.connect(self.updateUi)
39 
40         self.setWindowTitle("Calculate")
41 
42     def updateUi(self):
43         try:
44             text = self.lineedit.text()
45 
46             # 使用eval函數計算表達式的值
47             self.browser.append("{} = <b>{}</b>".format(text,eval(text)))
48         except:
49             self.browser.append("<font color=red>{} is invalid!</font>".format(text))
50 
51 app = QApplication(sys.argv)
52 form = Form()   # 創建Form實例
53 form.show()     # 調用了show()後,事件循環開始,顯示出窗口
54 app.exec_()

PyQt5學習筆記2-GUI編程基礎-2