中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pyqt5與html數據交互的原理是什么

發布時間:2022-03-03 15:55:27 來源:億速云 閱讀:351 作者:iii 欄目:web開發

本文小編為大家詳細介紹“pyqt5與html數據交互的原理是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“pyqt5與html數據交互的原理是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

  部分核心代碼解析

  共享類

  我們先來看看共享類。

  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頁面傳值到PyQt5", fullinfo)

  self.finish.emit(info)

  value = pyqtProperty(str, fget=PyQt52WebValue, fset=Web2PyQt5Value)

  在這個共享類里面我們比以前多了一個新的知識點:pyqtProperty。

  使用pyqtProperty()函數定義新的PyQt屬性。 它的使用方式與標準的Python property()函數相同。 事實上,以這種方式定義的PyQt屬性也表現為Python屬性。

  那么問題又來了,什么是Python property()函數??

  根據Python的幫助文檔上的介紹,它的完全形式是這樣的:

  class property(fget=None, fset=None, fdel=None, doc=None)

  作用是返回Python的某一個屬性。

  fget是獲取屬性值的函數。 fset是用于設置屬性值的函數。 fdel是用于刪除屬性值的函數。 doc為該屬性創建了一個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將調用getter,c.x = value將調用setter和del c.x將調用delx。

  如果給定,doc將是property屬性的docstring。 否則,該屬性將復制fget的docstring(如果存在)。

  這使得使用property()作為裝飾器可以輕松創建只讀屬性:

  class Parrot:

  def __init__(self):

  self._voltage = 100000

  [email?protected]

  def voltage(self):

  """得到當前voltage的值"""

  return self._voltage

  @property裝飾器將voltage()方法轉換為具有相同名稱的只讀屬性。

  屬性對象具有可用作裝飾器的getter,setter和deleter方法,這些方法創建屬性的副本,并將相應的訪問函數設置為裝飾函數。舉例如下:

  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.")

  請務必為其他函數指定與原始屬性相同的名稱(在本例中為x)。

  返回的屬性對象還具有與構造函數參數對應的屬性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]]]]]]]]]]]]])

  感覺很復雜!

  創建一個既作為Python屬性又作為PyQt屬性的屬性。

  參數:

  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()函數相同。 以下示例顯示如何使用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

  好了,現在我們回過頭來再看下我們自己定義的共享類。

  def PyQt52WebValue(self):

  return "666"

  寫上,但是后面我們沒用。

  def Web2PyQt5Value(self, str):

  info = str.split()

  fullinfo = "用戶名:{},密碼:{}".format(info[0], info[1])

  QMessageBox.information(self, "從Web頁面傳值到PyQt5", fullinfo)

  self.finish.emit(info)

  當我們得到從Web頁面傳來值的時候,我們處理一下,分成用戶名和密碼,并將其通過自定義信號發射出去。

  value = pyqtProperty(str, fget=PyQt52WebValue, fset=Web2PyQt5Value)

讀到這里,這篇“pyqt5與html數據交互的原理是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

博野县| 织金县| 玉溪市| 进贤县| 东明县| 信丰县| 灵丘县| 遵义市| 普格县| 厦门市| 榆林市| 宜丰县| 娱乐| 平武县| 淮安市| 固安县| 佛山市| 珲春市| 白水县| 菏泽市| 马山县| 噶尔县| 舟曲县| 定州市| 宁城县| 沁水县| 灵丘县| 昌黎县| 延庆县| 洪洞县| 鸡泽县| 彭阳县| 普安县| 遂溪县| 东宁县| 邢台县| 仲巴县| 河南省| 房山区| 广丰县| 保山市|