最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

PyQt5類型判定

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

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

兩方法返回值均為True或False

類型判斷演示

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

from PyQt5.Qt import *
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QObject的學習")
        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***************結束
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

運行??梢耘卸硞€對象所屬的類型

PyQt5類型判斷案例

根據所屬類型, 設置指定的樣式

from PyQt5.Qt import *
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QObject的學習")
        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***************結束
        # *************案例***************開始
        label1 = QLabel(self)
        label1.setText("景天科技苑")
        label1.move(100, 100)
        label2 = QLabel(self)
        label2.setText("科技不間斷")
        label2.move(150, 150)
        btn = QPushButton(self)
        btn.setText("點我")
        btn.move(200, 200)
        #循環(huán)遍歷子對象
        # for widget in self.findChildren(QLabel):
        for widget in self.children():
            # print(widget)
            # if widget.isWidgetType():
            #將子對象中為QLabel的對象設置背景樣式
            if widget.inherits("QLabel"):
                widget.setStyleSheet("background-color: cyan;")
        # *************案例***************結束
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

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

PyQt5刪除對象

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

刪除對象案例

from PyQt5.Qt import *
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QObject的學習")
        self.resize(500, 500)
        self.setup_ui()
    def setup_ui(self):
        self.QObject對象刪除()
    def QObject對象刪除(self):
        obj1 = QObject()
        #為了防止局部變量運行完方法就銷毀,將局部變量賦值給類變量
        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之后才會銷毀對象,才會真正的去釋放相關的對象
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

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

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

您可能感興趣的文章:

相關文章

  • python使用XPath解析數據爬取起點小說網數據

    python使用XPath解析數據爬取起點小說網數據

    這篇文章主要介紹了python使用XPath解析數據爬取起點小說網數據,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-04-04
  • python 集合 并集、交集 Series list set 轉換的實例

    python 集合 并集、交集 Series list set 轉換的實例

    今天小編就為大家分享一篇python 集合 并集、交集 Series list set 轉換的實例。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python實現多圖繪制系統(tǒng)的示例代碼

    Python實現多圖繪制系統(tǒng)的示例代碼

    這篇文章主要為大家詳細介紹了Python如何實現制作一個多圖繪制系統(tǒng),文中的示例代碼簡潔易懂,具有一定的借鑒價值,感興趣的小伙伴可以學習一下
    2023-09-09
  • 使用PYTHON接收多播數據的代碼

    使用PYTHON接收多播數據的代碼

    一個PYTHON腳本,能夠在LINUX上發(fā)送多播數據。其實編制起來也不算太麻煩。具體代碼如下
    2012-03-03
  • python優(yōu)雅實現代碼與敏感信息分離的方法

    python優(yōu)雅實現代碼與敏感信息分離的方法

    這篇文章主要介紹了python優(yōu)雅實現代碼與敏感信息分離的方法,在flask中,python-dotenv 可以無縫接入項目中,只要你的項目中存在 .env 或者 .flaskenv 文件,他就會提示你是否安裝 python-dotenv,需要的朋友可以參考下
    2022-05-05
  • python實現五子棋雙人對弈

    python實現五子棋雙人對弈

    這篇文章主要為大家詳細介紹了python實現五子棋雙人對弈,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • python讀取與寫入csv格式文件的示例代碼

    python讀取與寫入csv格式文件的示例代碼

    本篇文章主要介紹了python讀取與寫入csv格式文件的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Python 訪問限制 private public的詳細介紹

    Python 訪問限制 private public的詳細介紹

    在一個模塊中,我們可能會定義很多函數和變量。這篇文章主要介紹了Python 訪問限制 private public的詳細介紹,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • Python 跨文件夾導入自定義包的實現

    Python 跨文件夾導入自定義包的實現

    有時我們自己編寫一些模塊時,跨文件夾調用會出現ModuleNotFoundError: No module named 'XXX',本文就來介紹一下解決方法,感興趣的可以了解一下
    2023-11-11
  • python基礎詳解之if循環(huán)語句

    python基礎詳解之if循環(huán)語句

    這篇文章主要介紹了python基礎詳解之if循環(huán)語句,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有很好的幫助需要的朋友可以參考下
    2021-04-04

最新評論

伊川县| 宜宾县| 陈巴尔虎旗| 将乐县| 桂林市| 云龙县| 来凤县| 瑞昌市| 扎兰屯市| 伊春市| 南岸区| 灌南县| 额敏县| 郓城县| 瓮安县| 旅游| 吐鲁番市| 丽水市| 开平市| 宜良县| 吉木萨尔县| 澄迈县| 灵石县| 岱山县| 罗源县| 赤水市| 香格里拉县| 济宁市| 徐闻县| 马鞍山市| 顺昌县| 杭锦旗| 宣武区| 高陵县| 扎兰屯市| 丰镇市| 定边县| 济源市| 安福县| 闽侯县| 台北市|