日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python PyQt5.QtWidgets.QWidget类

發(fā)布時間:2025/3/20 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python PyQt5.QtWidgets.QWidget类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考文章:QWidget

文章目錄

    • 詳細說明
    • 事件
    • 示例


詳細說明

widget是用戶界面的原子:它從窗口系統(tǒng)接收鼠標,鍵盤和其他事件,并將其自身繪制在屏幕上。 每個widget都是矩形的,并且按z-order排序。 widget會被其父級及其前面的widget裁剪。

未嵌入父widget中的widget被稱為窗口。 通常,窗口具有框架和標題欄,盡管也可以使用適當?shù)拇翱趂lag來創(chuàng)建沒有這種修飾的窗口。 在Qt中,QMainWindow和QDialog的各種子類是最常見的窗口類型。

每個widget的構造函數(shù)都接受一個或兩個標準參數(shù):

  • QWidget * parent = \ nullptr是新widget的父級。 如果它是None(默認值),則新的widget將是一個窗口。 如果不是,它將是父級的子級,并且受父級的幾何形狀限制(除非您將Window指定為window flag)。

  • Qt :: WindowFlags f = 0(如果有)設置窗口flag; 默認值幾乎適用于所有widget,但是要獲取例如沒有窗口系統(tǒng)框架的窗口,必須使用特殊flag。

QWidget有許多成員函數(shù),但是其中一些沒有直接的功能。 例如,QWidget具有font屬性,但從未使用過它。 有許多子類提供了真正的功能,例如QLabel,QPushButton,QListWidget和QTabWidget。

事件

窗口小部件響應通常由用戶操作引起的事件。 Qt通過使用包含有關每個事件信息的QEvent子類的實例調用特定的事件處理函數(shù)來將事件傳遞給窗口小部件。

如果您的窗口小部件僅包含子窗口小部件,則可能不需要實現(xiàn)任何事件處理程序。 如果您想在子窗口小部件中檢測到鼠標單擊,請在窗口小部件的mousePressEvent()中調用子窗口的underMouse()函數(shù)。

Scribble示例實現(xiàn)了一系列事件,以處理鼠標移動,按鈕按下和窗口大小調整。

您將需要提供自己的窗口小部件的行為和內容,但是這里是與QWidget相關的事件的簡要概述,從最常見的事件開始:

  • 每當需要重新繪制小部件時,都會調用paintEvent()。每個顯示自定義內容的小部件都必須實現(xiàn)它。使用QPainter的繪畫只能在paintEvent()或paintEvent()調用的函數(shù)中進行。

  • 調整窗口小部件的大小后,將調用resizeEvent()。

  • 當鼠標光標在窗口小部件內時,或者當窗口小部件使用grabMouse()抓住鼠標時,按下鼠標按鈕將調用mousePressEvent()。在不釋放鼠標的情況下按下鼠標,實際上與調用catchMouse()相同。

  • 釋放鼠標按鈕時,將調用mouseReleaseEvent()。小部件在收到相應的鼠標按下事件時會收到鼠標釋放事件。這意味著,如果用戶在小部件內按下鼠標,然后在釋放鼠標按鈕之前將鼠標拖到其他位置,則小部件會收到釋放事件。有一個例外:如果在按住鼠標按鈕的同時出現(xiàn)彈出菜單,則該彈出窗口會立即竊取鼠標事件。

  • 當用戶雙擊窗口小部件時,將調用mouseDoubleClickEvent()。如果用戶雙擊,則小部件會收到一個鼠標按下事件,一個鼠標釋放事件,(一個鼠標點擊事件),第二次鼠標按下,該事件以及最后一個第二次鼠標釋放事件。 (如果在此操作期間鼠標未保持穩(wěn)定,則可能還會收到一些鼠標移動事件。)在第二次單擊到達之前,無法將單擊與雙擊區(qū)分開。 (這就是為什么大多數(shù)GUI書籍都建議雙擊是單擊的擴展,而不是觸發(fā)其他操作的原因之一。)

接受鍵盤輸入的小部件需要重新實現(xiàn)一些事件處理程序:

  • 每當按下某個鍵時,就會調用keyPressEvent();按住該鍵的時間足以使其自動重復時,會再次調用keyPressEvent()。 Tab和Shift + Tab鍵僅在焦點更改機制未使用時才傳遞給小部件。要強制這些鍵由您的小部件處理,必須重新實現(xiàn)event()。

  • 當窗口小部件獲得鍵盤焦點時會調用focusInEvent()(假設您已調用setFocusPolicy())。行為良好的小部件表示它們以清晰但謹慎的方式擁有鍵盤焦點。

  • 當小部件失去鍵盤焦點時,將調用focusOutEvent()。

您可能還需要重新實現(xiàn)一些不太常見的事件處理程序:

  • 只要在按住鼠標按鈕的同時移動鼠標,就會調用mouseMoveEvent()。這在拖放操作期間很有用。如果調用setMouseTracking(true),即使沒有按下任何按鈕,也將獲得鼠標移動事件。 (另請參見拖放指南。)

  • 每當釋放鍵并按住鍵時(如果鍵是自動重復的),都會調用keyReleaseEvent()。在這種情況下,小部件每次重復都會收到一對按鍵釋放和按鍵事件。 Tab和Shift + Tab鍵僅在焦點更改機制未使用時才傳遞給小部件。要強制這些鍵由您的小部件處理,必須重新實現(xiàn)event()。

  • 每當用戶在小部件具有焦點的情況下轉動鼠標滾輪時,就會調用wheelEvent()。

  • 當鼠標進入小部件的屏幕空間時,將調用enterEvent()。 (這不包括小部件的任何子級擁有的屏幕空間。)

  • 當鼠標離開窗口小部件的屏幕空間時,將調用LeaveEvent()。如果鼠標進入子窗口小部件,則不會導致LeaveEvent()。

  • 當窗口小部件已相對于其父級移動時,將調用moveEvent()。

  • 當用戶關閉窗口小部件時(或調用close()時),將調用closeEvent()。

Type文檔中還描述了一些相當模糊的事件。 要處理這些事件,您需要直接重新實現(xiàn)event()。

event()的默認實現(xiàn)處理Tab和Shift + Tab(以移動鍵盤焦點),并將其他大多數(shù)事件傳遞給上述更專業(yè)的處理程序之一。

事件及其傳遞機制在事件系統(tǒng)中介紹。

類參數(shù):

class QWidget([parent=None[, f=Qt.WindowFlags()]]) param f WindowFlagsparam parent QWidget

構造一個小部件,它是父級的子級,并將小部件標志設置為f。

如果parent為None,則新窗口小部件將成為一個窗口。 如果parent是另一個小部件,則此小部件將成為parent內的子窗口。 刪除其父項時,將刪除新的窗口小部件。

小部件標志參數(shù)f通常為0,但可以將其設置為自定義窗口框架(即parent必須為None)。 要自定義框架,請使用由任何窗口標志的按位“或”組成的值。

如果將子窗口小部件添加到已經可見的窗口小部件,則必須顯式顯示子窗口以使其可見。

請注意,Qt的X11版本可能無法在所有系統(tǒng)上提供樣式標志的所有組合。 這是因為在X11上,Qt只能詢問窗口管理器,并且窗口管理器可以覆蓋應用程序的設置。 在Windows上,Qt可以設置所需的任何標志。

WindowFlags

這個flags還真不知道咋設置。。。


老報黃,設置flags=0或flags=None都不對

示例

# -*- coding: utf-8 -*- """ @File : test.py @Time : 2020/4/1 19:24 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import sys from PyQt5.QtWidgets import QApplication, QWidgetapp = QApplication(sys.argv) # 實例化一個應用對象 w = QWidget() # 窗口界面的基本控件,它提供了基本的應用構造器。默認情況下,構造器是沒有父級的,沒有父級的構造器被稱為窗口(window)。 w.show() # 讓控件在桌面上顯示出來。控件在內存里創(chuàng)建,之后才能在顯示器上顯示出來。 sys.exit(app.exec_()) # 確保主循環(huán)安全退出

結果:

總結

以上是生活随笔為你收集整理的python PyQt5.QtWidgets.QWidget类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。