国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【PyQt學習篇 · ③】:QObject - 神奇的對象管理工具

這篇具有很好參考價值的文章主要介紹了【PyQt學習篇 · ③】:QObject - 神奇的對象管理工具。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

QObject類型判定

常用的API

  1. isWidgetType()方法:
    • 使用方式:obj.isWidgetType()
    • 作用:判斷一個對象是否為QWidget及其子類的實例。QWidget是QObject的子類,用于創(chuàng)建用戶界面的窗口組件。
    • 返回值:如果是QWidget及其子類的實例,則返回True;否則返回False。
    • 以下為isWidgetType()的使用示例:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QObject
import sys

class Window(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.steup_ui()

    def steup_ui(self):
        self.QObject_type_determination()

    # QObject類型判定
    def QObject_type_determination(self):
        obj = QObject()
        wid = QWidget()
        btn = QPushButton()
        label = QLabel()

        objs = [obj, wid, btn, label]

        for o in objs:
            print(o.isWidgetType())    # 判斷某個對象是否是控件類

if __name__ == '__main__':
    app = QApplication(sys.argv)

    window = Window()
    window.show()

    sys.exit(app.exec_())

運行結(jié)果:
【PyQt學習篇 · ③】:QObject - 神奇的對象管理工具,PyQt5從入門到精通,pyqt,python

  1. inherits()方法:
    • 使用方式:obj.inherits(class_name)
    • 作用:判斷一個對象是否為指定類名或其子類的實例。
    • 參數(shù):class_name為一個字符串,即類名。
    • 返回值:如果是指定類名或其子類的實例,則返回True;否則返回False。
    • 以下為inherits()的使用示例(基于以上程序進行修改):
for o in objs:
    print(o.inherits("QPushButton"))    # 判斷某個對象是否是控件類

運行結(jié)果:
【PyQt學習篇 · ③】:QObject - 神奇的對象管理工具,PyQt5從入門到精通,pyqt,python

需要注意的是,isWidgetType()和inherits()方法同樣需要導入QtCore模塊中的QObject類。這兩個方法在QObject及其派生類中都可以使用。

應用場景:過濾篩選控件

案例:創(chuàng)建一個窗口,包含多個QLabel或其他控件。
要求:將包含在窗口內(nèi)所有的QLabel控件,設(shè)置背景色cyan。

以下為實現(xiàn)本次案例的代碼:

    # QObject類型判定
    def QObject_type_determination(self):
        label = QLabel(self)
        label.setText('我要學習')
        label.move(50, 0)

        label2 = QLabel(self)
        label2.setText("PyQt5")
        label2.move(50, 50)

        btn = QPushButton(self)
        btn.setText("開始學習")
        btn.move(50, 100)

        for widget in self.children():
            if widget.inherits("QLabel"):
                widget.setStyleSheet("background-color: cyan;")

        # # 或者
        # for widget in self.findChildren(QLabel):
        #     widget.setStyleSheet("background-color: cyan;")

運行結(jié)果:
【PyQt學習篇 · ③】:QObject - 神奇的對象管理工具,PyQt5從入門到精通,pyqt,python

QObject定時器

常用API

在PyQt中,QObject類提供了定時器相關(guān)的API,包括startTimer、killTimer和timerEvent方法。

  1. startTimer()方法:

    • 使用方式:interval = obj.startTimer(msec)
    • 作用:啟動一個定時器,在經(jīng)過指定的毫秒數(shù)后觸發(fā)定時器事件。定時器事件將被發(fā)送到obj的timerEvent()方法。
    • 參數(shù):msec為定時器的觸發(fā)時間,單位為毫秒。
    • 返回值:返回定時器的唯一標識符。
  2. killTimer()方法:

    • 使用方式:obj.killTimer(timerId)
    • 作用:停止指定標識符對應的定時器。
    • 參數(shù):timerId為定時器的唯一標識符。
  3. timerEvent()方法:

    • 使用方式:def timerEvent(self, event)
    • 作用:當定時器事件觸發(fā)時,Qt會自動調(diào)用該方法處理定時器事件。
    • 參數(shù):event為事件對象,包含了定時器的標識符和相關(guān)信息。

注意:timerEvent()方法是QObject的保護方法,需要在子類中重新實現(xiàn)。該方法會在定時器事件觸發(fā)時自動被調(diào)用。

應用場景

一般在輪詢、倒計時等場景下使用。

案例:創(chuàng)建一個窗口,并設(shè)置一個子控件QLabel。
要求:展示10s倒計時,倒計時結(jié)束就停止計時。

以下為實現(xiàn)本次案例的代碼:

from PyQt5.QtWidgets import *
import sys


class MyLabel(QLabel):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setStyleSheet("font-size: 22px;")

    def set_Text(self, text):
        self.setText(text)

    def set_timerId(self, timerID):
        self.timerID = timerID

    # 重寫父類方法
    def timerEvent(self, *args, **kwargs):
        current_sec = int(self.text())
        current_sec -= 1
        self.setText(str(current_sec))

        if current_sec == 0:
            self.killTimer(self.timerID)    # 通過timerId關(guān)閉定時器

if __name__ == '__main__':
    app = QApplication(sys.argv)

    window = QWidget()
    window.show()
    window.setWindowTitle("QObjcet定時器")
    window.resize(200, 200)

    label = MyLabel(window)

    label.set_Text("10")     # 設(shè)置倒計時為10s
    label.set_timerId(label.startTimer(1000))   # 調(diào)用startTimer(),單位為毫秒,并返回timerId

    label.move(100, 50)
    label.show()

    sys.exit(app.exec_())

運行結(jié)果:

【PyQt學習篇 · ③】:QObject - 神奇的對象管理工具,PyQt5從入門到精通,pyqt,python文章來源地址http://www.zghlxwxcb.cn/news/detail-713380.html

到了這里,關(guān)于【PyQt學習篇 · ③】:QObject - 神奇的對象管理工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 學習【Git項目管理工具】這一篇就夠了

    學習【Git項目管理工具】這一篇就夠了

    Git是一個分布式版本控制工具,主要用于管理開發(fā)過程中的源代碼文件(Java類、ml文件、html頁面等),在軟件開發(fā)過程中被廣泛使用。 學完Git之后能做什么? 代碼回溯 版本切換 多人協(xié)作 遠程備份 Git倉庫分為兩種: 本地倉庫:開發(fā)人員自己電腦的 Git 倉庫 遠程倉庫:遠程服務

    2024年01月19日
    瀏覽(117)
  • 【Node.js學習 day5——包管理工具】

    包是什么 包(package),代表了一組特定功能的源碼集合 包管理工具 管理包的應用軟件,可以對包進行下載安裝,更新,刪除,上傳等操作 借助包管理工具,可以快速開發(fā)項目,提升開發(fā)效率 常用的包管理工具 下面列舉了前端常用的包管理工具 · npm · yarn · cnpm 搜索包的方

    2024年02月01日
    瀏覽(60)
  • ARM & Linux 基礎(chǔ)學習 / Ubuntu 下的包管理 / apt工具

    編輯整理 by Staok。 注:在 Github 上的原版文章日后可能會更新,在其它位置發(fā)的不會跟進。文章的 Gitee 倉庫地址,Gitee 訪問更流暢。 Ubuntu 下的包管理 / apt工具 包管理系統(tǒng)的功能和優(yōu)點大致相同,但打包格式和工具會因平臺(不同的 Linux 發(fā)行版)而異,如下表所示。 操作系

    2024年02月05日
    瀏覽(28)
  • IDEA下方工具欄SideBar沒有Services解決方法 IDEA配合微服務學習多端口管理打開Services欄方法

    IDEA下方工具欄SideBar沒有Services解決方法 IDEA配合微服務學習多端口管理打開Services欄方法

    微服務學習時,一次要打開多個端口,比如8080給order模塊、8081給user模塊……這就需要用idea管理多端口。 這時候就可以用到Services欄進行管理。 首先看下方Sidebar沒有Services。 打開方式一:手動打開 在IDEA中打開\\\"View\\\"-\\\"Tool Windows\\\"-\\\"Services\\\"?打開。 打開方式二:快捷鍵 按alt+8。

    2024年02月06日
    瀏覽(17)
  • 從小白到大神之路之學習運維第44天---第三階段----拓展知識-----文件管理命令(find+sed+awk)、pycharm工具

    從小白到大神之路之學習運維第44天---第三階段----拓展知識-----文件管理命令(find+sed+awk)、pycharm工具

    第三階段基礎(chǔ) 時 ?間:2023年6月20日 參加人:全班人員 內(nèi) ?容: 目錄 一、文件管理命令 find 1. 根據(jù)文件名查找文件 2. 根據(jù)文件類型查找文件 3. 根據(jù)文件大小查找文件 4. 根據(jù)時間戳查找文件 5. 組合多個條件查找文件 Sed 1. 替換文本 2. 插入和刪除行 3. 格式化輸出 總 結(jié): a

    2024年02月09日
    瀏覽(27)
  • 【Docker管理工具】使用Docker部署portainer-ce管理工具

    【Docker管理工具】使用Docker部署portainer-ce管理工具

    Portainer是一個可視化的容器鏡像的圖形管理工具,利用Portainer可以輕松構(gòu)建,管理和維護Docker環(huán)境。 而且完全免費,基于容器化的安裝方式,方便高效部署。 Portainer Community Edition是一個用于容器化應用程序的輕量級服務交付平臺,可用于管理 Docker、Swarm、Kubernetes 和 ACI 環(huán)境

    2024年02月19日
    瀏覽(22)
  • 文件管理工具.netcore資源文件管理

    文件管理工具.netcore資源文件管理

    文件管理工具 怎么快速有效的管理我的文件包括文件夾,需求功能是 模糊搜索顯示匹配的文件夾或文件數(shù)據(jù) 快速打開文件夾位置 在windows直接查看搜索速度太慢,范圍寬泛,整理所需資源文件名和文件本機路徑保存在數(shù)據(jù)庫,可以在數(shù)據(jù)庫中快速檢索 顯示文件夾路徑然后點

    2024年01月23日
    瀏覽(28)
  • 自動化管理管理工具----Ansible

    自動化管理管理工具----Ansible

    目錄 ?編輯 一、Ansible概念 1.1特點 二、工作機制(日常模塊) 2.1 核心程序 三、Ansible 環(huán)境安裝部署 四、ansible 命令行模塊 4.1command 模塊 4.2shell 模塊 4.3cron 模塊 4.4user 模塊 4.5group 模塊 4.6copy模塊 4.7file模塊 4.8hostname模塊 4.9ping 模塊 4.11yum 模塊 4.12service/systemd 模塊 4.13script 模塊

    2024年02月10日
    瀏覽(25)
  • 版本管理|Git -目前最好的版本管理工具

    版本管理|Git -目前最好的版本管理工具

    在軟件開發(fā)中,版本通常指的是代碼或項目的一個特定狀態(tài)或發(fā)布的一個特定副本。每次對代碼或項目進行修改時,開發(fā)團隊可以選擇增加版本號或標記新版本,以便在未來能夠準確追蹤和識別不同的代碼狀態(tài)。 在項目根目錄下運行 tree命令可以查看文件樹,版本是文件樹在

    2024年04月11日
    瀏覽(28)
  • Linux:Ubuntu安裝firewalld防火墻管理工具【W(wǎng)SL用UFW防火墻管理工具】

    firewalld防火墻是Centos7系統(tǒng)默認的防火墻管理工具,取代了之前的iptables防火墻,也是工作在網(wǎng)絡層,屬于包過濾防火墻。 firewalld和iptables都是用來管理防火墻的工具(屬于用戶態(tài))來定義防火墻的各種規(guī)則功能,內(nèi)部結(jié)構(gòu)都指向netfilter網(wǎng)絡過濾子系統(tǒng)(屬于內(nèi)核態(tài))來實現(xiàn)包過

    2024年02月06日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包