本文小編為大家詳細介紹“pyqt5與html數(shù)據(jù)交互的原理是什么”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“pyqt5與html數(shù)據(jù)交互的原理是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
創(chuàng)新互聯(lián)專注于新和企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,成都商城網(wǎng)站開發(fā)。新和網(wǎng)站建設公司,為新和等地區(qū)提供建站服務。全流程按需網(wǎng)站建設,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務
部分核心代碼解析
共享類
我們先來看看共享類。
class Myshared(QWidget):
finish = pyqtSignal(list)
def __init__(self):
super().__init__()
def PyQt52WebValue(self):
return "666"
def Web2PyQt5Value(self, str):
info = str.split()
fullinfo = "用戶名:{},密碼:{}".format(info[0], info[1])
QMessageBox.information(self, "從Web頁面?zhèn)髦档絇yQt5", fullinfo)
self.finish.emit(info)
value = pyqtProperty(str, fget=PyQt52WebValue, fset=Web2PyQt5Value)
在這個共享類里面我們比以前多了一個新的知識點:pyqtProperty。
使用pyqtProperty()函數(shù)定義新的PyQt屬性。 它的使用方式與標準的Python property()函數(shù)相同。 事實上,以這種方式定義的PyQt屬性也表現(xiàn)為Python屬性。
那么問題又來了,什么是Python property()函數(shù)??
根據(jù)Python的幫助文檔上的介紹,它的完全形式是這樣的:
class property(fget=None, fset=None, fdel=None, doc=None)
作用是返回Python的某一個屬性。
fget是獲取屬性值的函數(shù)。 fset是用于設置屬性值的函數(shù)。 fdel是用于刪除屬性值的函數(shù)。 doc為該屬性創(chuàng)建了一個docstring。
典型用法是定義可被管理的屬性x:
class C:
def __init__(self):
self._x = None
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, "I'm the 'x' property.")
如果c是C的實例,c.x將調(diào)用getter,c.x = value將調(diào)用setter和del c.x將調(diào)用delx。
如果給定,doc將是property屬性的docstring。 否則,該屬性將復制fget的docstring(如果存在)。
這使得使用property()作為裝飾器可以輕松創(chuàng)建只讀屬性:
class Parrot:
def __init__(self):
self._voltage = 100000
[email?protected]
def voltage(self):
"""得到當前voltage的值"""
return self._voltage
@property裝飾器將voltage()方法轉(zhuǎn)換為具有相同名稱的只讀屬性。
屬性對象具有可用作裝飾器的getter,setter和deleter方法,這些方法創(chuàng)建屬性的副本,并將相應的訪問函數(shù)設置為裝飾函數(shù)。舉例如下:
class C:
def __init__(self):
self._x = None
[email?protected]
def x(self):
"""我是'x'屬性"""
return self._x
[email?protected]
def x(self, value):
self._x = value
[email?protected]
def x(self):
del self._x
此代碼與第一個示例完全等效:
x = property(getx, setx, delx, "I'm the 'x' property.")
請務必為其他函數(shù)指定與原始屬性相同的名稱(在本例中為x)。
返回的屬性對象還具有與構(gòu)造函數(shù)參數(shù)對應的屬性fget,fset和fdel。
在PyQt5中,它是這么用的:
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]]]]]]]]]]]]])
感覺很復雜!
創(chuàng)建一個既作為Python屬性又作為PyQt屬性的屬性。
參數(shù):
type - 屬性的類型。 它是Python類型對象或字符串。
fget - 用于獲取屬性值的,可選。
fset - 用于設置屬性值的,可選。
freset - 用于將屬性值重置為其默認值的,可選。
fdel - 用于刪除屬性的,可選。
doc - 屬性的docstring,可選。
designable - 設置Qt DESIGNABLE標志,可選。
scriptable - 設置Qt SCRIPTABLE標志,可選。
stored - 設置Qt STORED標志,可選。
user - 設置Qt USER標志,可選。
constant - 設置Qt CONSTANT標志,可選。
final - 設置Qt FINAL標志,可選。
notify - 未綁定通知信號,可選。
revision - 導出到QML的修訂版。
返回類型:屬性對象。
也可以使用pyqtProperty()作為裝飾器,方法與標準Python property()函數(shù)相同。 以下示例顯示如何使用getter和setter定義int屬性:
from PyQt5.QtCore import QObject, pyqtProperty
class Foo(QObject):
def __init__(self):
QObject.__init__(self)
self._total = 0
[email?protected](int)
def total(self):
return self._total
[email?protected]
def total(self, value):
self._total = value
好了,現(xiàn)在我們回過頭來再看下我們自己定義的共享類。
def PyQt52WebValue(self):
return "666"
寫上,但是后面我們沒用。
def Web2PyQt5Value(self, str):
info = str.split()
fullinfo = "用戶名:{},密碼:{}".format(info[0], info[1])
QMessageBox.information(self, "從Web頁面?zhèn)髦档絇yQt5", fullinfo)
self.finish.emit(info)
當我們得到從Web頁面?zhèn)鱽碇档臅r候,我們處理一下,分成用戶名和密碼,并將其通過自定義信號發(fā)射出去。
value = pyqtProperty(str, fget=PyQt52WebValue, fset=Web2PyQt5Value)
讀到這里,這篇“pyqt5與html數(shù)據(jù)交互的原理是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內(nèi)容的文章,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章標題:pyqt5與html數(shù)據(jù)交互的原理是什么
瀏覽路徑:http://jinyejixie.com/article38/igoppp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、搜索引擎優(yōu)化、建站公司、微信小程序、營銷型網(wǎng)站建設、響應式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)