亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python PyQt5對象類型的判定及對象刪除操作詳細(xì)解讀

 更新時(shí)間:2024年07月18日 09:43:14   作者:景天科技苑  
PyQt5主要是用來判定一個對象的類型,或者說是否繼承自某個類,本文給大家介紹python PyQt5對象類型的判定,對象刪除操作詳細(xì)解讀,感興趣的朋友一起看看吧

PyQt5類型判定

主要是用來判定一個對象的類型,或者說是否繼承自某個類
相關(guān)API和應(yīng)用場景如下
主要有兩個方法

  • isWidgetType() 判斷某個對象是都控件類型
  • inherits() 一個對象是否繼承(直接或間接)自某個父類

兩方法返回值均為True或False

類型判斷演示

遍歷對象,判斷對象所屬類型和父類

from PyQt5.Qt import *
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QObject的學(xué)習(xí)")
        self.resize(500, 500)
        self.setup_ui()
    def setup_ui(self):
        self.QObject類型判定()
    def QObject類型判定(self):
        # *************API***************開始
        obj = QObject()
        w = QWidget()
        btn = QPushButton()
        label = QLabel()
        objs = [obj, w, btn, label]
        for o in objs:
            print("是否是QWidget的控件類型",o.isWidgetType())
            print("父類是否是QWidget",o.inherits("QWidget"))
            print("父類是否是QPushButton",o.inherits("QPushButton"))
            print("------------------------------------------")
        # *************API***************結(jié)束
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

運(yùn)行??梢耘卸硞€對象所屬的類型

PyQt5類型判斷案例

根據(jù)所屬類型, 設(shè)置指定的樣式

from PyQt5.Qt import *
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QObject的學(xué)習(xí)")
        self.resize(500, 500)
        self.setup_ui()
    def setup_ui(self):
        self.QObject類型判定()
    def QObject類型判定(self):
        # *************API***************開始
        # obj = QObject()
        # w = QWidget()
        # btn = QPushButton()
        # label = QLabel()
        #
        # objs = [obj, w, btn, label]
        # for o in objs:
        #     print("是否是QWidget的控件類型",o.isWidgetType())
        #     print("父類是否是QWidget",o.inherits("QWidget"))
        #     print("父類是否是QPushButton",o.inherits("QPushButton"))
        #     print("------------------------------------------")
        # *************API***************結(jié)束
        # *************案例***************開始
        label1 = QLabel(self)
        label1.setText("景天科技苑")
        label1.move(100, 100)
        label2 = QLabel(self)
        label2.setText("科技不間斷")
        label2.move(150, 150)
        btn = QPushButton(self)
        btn.setText("點(diǎn)我")
        btn.move(200, 200)
        #循環(huán)遍歷子對象
        # for widget in self.findChildren(QLabel):
        for widget in self.children():
            # print(widget)
            # if widget.isWidgetType():
            #將子對象中為QLabel的對象設(shè)置背景樣式
            if widget.inherits("QLabel"):
                widget.setStyleSheet("background-color: cyan;")
        # *************案例***************結(jié)束
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

運(yùn)行,QLabel顏色都發(fā)生了變化,btn的顏色不變,說明選定了QLabel

PyQt5刪除對象

obj.deleteLater()
刪除一個對象時(shí), 也會解除它與父對象之間的關(guān)系。
deleteLater()并沒有將對象立即銷毀,而是向主消息循環(huán)發(fā)送了一個event,下一次主消息循環(huán)收到這個event之后才會銷毀對象。
這樣做的好處是可以在這些延遲刪除的時(shí)間內(nèi)完成一些操作,壞處就是內(nèi)存釋放會不及時(shí)。

刪除對象案例

from PyQt5.Qt import *
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QObject的學(xué)習(xí)")
        self.resize(500, 500)
        self.setup_ui()
    def setup_ui(self):
        self.QObject對象刪除()
    def QObject對象刪除(self):
        obj1 = QObject()
        #為了防止局部變量運(yùn)行完方法就銷毀,將局部變量賦值給類變量
        self.obj1 = obj1
        obj2 = QObject()
        obj3 = QObject()
        obj3.setParent(obj2)
        obj2.setParent(obj1)
        #創(chuàng)建信號與槽
        obj1.destroyed.connect(lambda : print("obj1被釋放了"))
        obj2.destroyed.connect(lambda : print("obj2被釋放了"))
        obj3.destroyed.connect(lambda : print("obj3被釋放了"))
        #刪除對象
        # del obj2  #這樣并不能刪除
        obj2.deleteLater()
        print(obj1.children())
        #obj2并沒有立馬被釋放
        print("obj2",obj2)
        #執(zhí)行了deleteLater后,向主消息循環(huán)發(fā)送了一個event,下一次主消息循環(huán)收到這個event之后才會銷毀對象,才會真正的去釋放相關(guān)的對象
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

運(yùn)行
可以看到obj2并沒有立馬被刪除,立馬打印obj1的子對象和obj2還是能打印出來的
過一段時(shí)間,obj2才被刪除

到此這篇關(guān)于python PyQt5對象類型的判定,對象刪除操作詳細(xì)解讀的文章就介紹到這了,更多相關(guān)python PyQt5對象類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • Python實(shí)現(xiàn)一個簡單的畢業(yè)生信息管理系統(tǒng)的示例代碼

    Python實(shí)現(xiàn)一個簡單的畢業(yè)生信息管理系統(tǒng)的示例代碼

    這篇文章主要介紹了Python實(shí)現(xiàn)一個簡單的畢業(yè)生信息管理系統(tǒng)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Tensorflow 利用tf.contrib.learn建立輸入函數(shù)的方法

    Tensorflow 利用tf.contrib.learn建立輸入函數(shù)的方法

    這篇文章主要介紹了Tensorflow 利用tf.contrib.learn建立輸入函數(shù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 基于opencv實(shí)現(xiàn)簡單畫板功能

    基于opencv實(shí)現(xiàn)簡單畫板功能

    這篇文章主要為大家詳細(xì)介紹了基于opencv實(shí)現(xiàn)簡單畫板功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Python全棧之文件函數(shù)和函數(shù)參數(shù)

    Python全棧之文件函數(shù)和函數(shù)參數(shù)

    這篇文章主要為大家介紹了Python的文件函數(shù)和函數(shù)參數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • pip命令無法使用的解決方法

    pip命令無法使用的解決方法

    今天小編就為大家分享一篇pip命令無法使用的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python使用fcntl模塊實(shí)現(xiàn)程序加鎖功能示例

    python使用fcntl模塊實(shí)現(xiàn)程序加鎖功能示例

    這篇文章主要介紹了python使用fcntl模塊實(shí)現(xiàn)程序加鎖功能,較為詳細(xì)的分析了fcntl模塊的具體功能并結(jié)合實(shí)例形式給出了Python實(shí)現(xiàn)程序加鎖的操作技巧,需要的朋友可以參考下
    2017-06-06
  • Python機(jī)器學(xué)習(xí)之手寫KNN算法預(yù)測城市空氣質(zhì)量

    Python機(jī)器學(xué)習(xí)之手寫KNN算法預(yù)測城市空氣質(zhì)量

    KNN(K-Nearest Neighbor)最鄰近分類算法是數(shù)據(jù)挖掘分類(classification)技術(shù)中常用算法之一,本文將介紹如何通過KNN算法實(shí)現(xiàn)城市空氣質(zhì)量的預(yù)測,感興趣的同學(xué)可以了解一下
    2021-12-12
  • Python魔法方法詳解

    Python魔法方法詳解

    今天小編就為大家分享一篇關(guān)于Python魔法方法詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 使用Python中的Playwright制作測試視頻的實(shí)現(xiàn)步驟

    使用Python中的Playwright制作測試視頻的實(shí)現(xiàn)步驟

    Playwright 是一種流行的用于測試 Web 應(yīng)用程序的自動化工具,它提供了多種功能來使測試更加高效和可靠,這些功能之一是能夠捕獲測試運(yùn)行的視頻,在此博客中,田辛老師將探索如何使用 Python 中的 Playwright 制作測試視頻,感興趣的同學(xué)可以參考本文自己動手嘗試
    2023-10-10
  • Python字符串格式化format()方法運(yùn)用實(shí)例

    Python字符串格式化format()方法運(yùn)用實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python字符串格式化format()方法運(yùn)用實(shí)例的相關(guān)資料,字符串格式化是Python編程中十分常用的部分,它可以幫助我們將更具可讀性的數(shù)據(jù)輸出到控制臺或?qū)懭胛募?需要的朋友可以參考下
    2023-08-08

最新評論