PyQt5學習筆記2 GUI程式設計基礎 2

2022-01-21 21:41:32 字數 2044 閱讀 1744

通過三個簡單軟體程式分析,找到pyqt gui程式設計的感覺!

(源自《rapid gui programming with python and qt》,本文將示例由qt4改成qt5版本)

軟體2:計算器

該示例是乙個對話方塊應用程式,即沒有選單欄、工具條、狀態列。

軟體功能:

1.使用者輸入數學表示式,按回車鍵後,表示式及結果就會顯示出來。

2.如果輸入的表示式無效,軟體會顯示錯誤資訊。

軟體執行效果圖

2 乙個計算器

3 該示例是乙個對話方塊應用程式,即沒有選單欄、工具條、狀態列。

4 軟體功能:

5 1.使用者輸入數學表示式,按回車鍵後,表示式及結果就會顯示出來。

6 2.如果輸入的表示式無效,軟體會顯示錯誤資訊。

7 '''

8 9 importsys

10 from math import * #輸入的表示式可使用math模組中所有數學函式,如sin、cos

11 from pyqt5.qtwidgets import * #使用此模組中的qwidget,qtextbrowser、qlineedit

12 13 #通過qdialog子類化的方法建立乙個頂級視窗

14 #pyqt中的所有控制項都是繼承自qwidget, 如:qdialog,qlineedit

15 classform(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 defupdateui(self):

43 try:

44 text =self.lineedit.text()

45 46 #使用eval函式計算表示式的值

".format(text,eval(text)))

48 except:

".format(text))

50 52 form = form() #建立form例項

53 form.show() #呼叫了show()後,事件迴圈開始,顯示出視窗

GUI程式設計Pyqt5之QtDesigner控制項

垂直布局 verticallayout 水平布局 horizontallayout 網格布局 gridlayout 表單布局 formlayout 絕對布局 預設 水平間隔 horizontalspacer 豎直間隔 verticalspacer 常規按鈕 pushbutton 工具按鈕 toolb...

PyQt5 學習筆記

pyqt5是由一系列python模組組成。超過620個類,6000函式和方法。能在諸如unix windows和mac os等主流作業系統上執行。pyqt5有兩種證書,gpl和商業證書。pyqt5類分為很多模組,主要模組有 qtcore 包含了核心的非gui的功能。主要和時間 檔案與資料夾 各種資料...

GUI學習之一 PyQt5初識

我們在第 篇裡先演示了gui的功能,其實python有多個庫是支援gui程式設計的,python官網列出了大量的說明,其中包括了原生的tkinter 還有許多第三方庫 pyqt pyside wxpython pygui kivy.等等 首先,我們要明白,對任意乙個庫來說,都是沒有最好的,只由最合適...