新增應用程式圖示
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('Icon')
self.setWindowIcon(QIcon('web.png'))
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
分析
Python 中的函式引數
在 Python 中,使用者定義的函式可以使用四種不同型別的引數。
- 預設引數:
-
功能定義
def defaultArg( name, msg = "Hello!"):
-
函式呼叫
defaultArg( name)
- 必需引數:
-
功能定義
def requiredArg (str,num):
-
功能呼叫:
requiredArg ("Hello",12)
- 關鍵字引數:
-
功能定義
def keywordArg( name, role ):
-
函式呼叫
keywordArg( name = "Tom", role = "Manager")
要麼
keywordArg( role = "Manager", name = "Tom")
- 可變數量的引數:
-
功能定義
def varlengthArgs(*varargs):
-
函式呼叫
varlengthArgs(30,40,50,60)
class Example(QWidget):
def __init__(self):
super().__init__()
...
物件導向程式設計中的三個重要事項是類,資料和方法。在這裡,我們建立了一個名為 Example
的新類。Example
類繼承自 QWidget
類。這意味著我們呼叫兩個建構函式:第一個用於 Example
類,第二個用於繼承類。super()
方法返回 Example
類的父物件,我們呼叫它的建構函式。self
變數指的是物件本身。
為什麼我們用 __init__
?
看一下這個:
class A(object):
def __init__(self):
self.lst = []
class B(object):
lst = []
現在嘗試:
>>> x = B()
>>> y = B()
>>> x.lst.append(1)
>>> y.lst.append(2)
>>> x.lst
[1, 2]
>>> x.lst is y.lst
True
還有這個:
>>> x = A()
>>> y = A()
>>> x.lst.append(1)
>>> y.lst.append(2)
>>> x.lst
[1]
>>> x.lst is y.lst
False
這是否意味著在例項化之前建立了 B 類中的 x?
是的,它是一個類屬性(它在例項之間共享)。而在 A 類中,它是一個例項屬性。
self.initUI()
GUI 的建立委託給 initUI()
方法。
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('Icon')
self.setWindowIcon(QIcon('web.png'))
這三種方法都是從 QWidget
類繼承而來的。setGeometry()
做了兩件事:它在螢幕上定位視窗並設定它的大小。前兩個引數是視窗的 x 和 y 位置。第三個是寬度,第四個是視窗的高度。事實上,它在一種方法中結合了 resize()
和 move()
方法。最後一個方法設定應用程式圖示。為此,我們建立了一個 QIcon
物件。QIcon
接收要顯示的圖示的路徑。
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
建立應用程式和示例物件。主迴圈開始。