PyQt5學習筆記2-GUI編程基礎-2
阿新 • • 發佈:2017-12-14
窗口 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