支援Qt屬性
阿新 • • 發佈:2018-12-06
支援Qt屬性
PyQt5不支援設定和獲取Qt屬性,就好像它們是普通的例項屬性一樣。這是因為屬性的名稱經常與屬性的getter方法的名稱衝突。
但是,PyQt5確實使用在建立例項時傳遞的關鍵字引數來支援屬性的初始設定。例如:
act = QAction("&Save", self, shortcut=QKeySequence.Save,
statusTip="Save the document to disk", triggered=self.save)
該示例還演示了使用關鍵字引數將訊號連線到插槽。
PyQt5還支援使用該pyqtConfigure()
方法設定屬性值(以及將訊號連線到插槽)。例如,以下結果與上面給出的結果相同:
act = QAction("&Save", self)
act.pyqtConfigure(shortcut=QKeySequence.Save,
statusTip="Save the document to disk", triggered=self.save)
定義新的Qt屬性
可以使用該pyqtProperty()
函式定義新的Qt屬性。它的使用方式與標準Python property()
函式相同。事實上,以這種方式定義的Qt屬性也表現為Python屬性。
PyQt5.QtCore.pyqtProperty
(type [,fget = None [,fset = None [,freset = None [,fdel = None [,doc = None [,designable = True [,scriptable = True [,stored = True [,user = False [,constant] = False [,final = False [,notify = None [,revision = 0 ] ] ] ] ] ] ] ] ] ]] ] ] )
建立一個既作為Python屬性又作為Qt屬性的屬性。
引數: |
|
---|---|
返回型別: | 屬性物件。 |
它也可以pyqtProperty()
像標準Python property()
函式一樣用作裝飾器。以下示例顯示如何int
使用getter和setter 定義屬性:
from PyQt5.QtCore import QObject, pyqtProperty
class Foo(QObject):
def __init__(self):
QObject.__init__(self)
self._total = 0
@pyqtProperty(int)
def total(self):
return self._total
@total.setter
def total(self, value):
self._total = value
如果您更喜歡Qt術語,您也可以使用write
而不是 setter
(而read
不是getter
)。