python PyQt5.QtWidgets.QWidget类
参考文章:QWidget
文章目录
- 详细说明
- 事件
- 示例
详细说明
widget是用户界面的原子:它从窗口系统接收鼠标,键盘和其他事件,并将其自身绘制在屏幕上。 每个widget都是矩形的,并且按z-order排序。 widget会被其父级及其前面的widget裁剪。
未嵌入父widget中的widget被称为窗口。 通常,窗口具有框架和标题栏,尽管也可以使用适当的窗口flag来创建没有这种修饰的窗口。 在Qt中,QMainWindow和QDialog的各种子类是最常见的窗口类型。
每个widget的构造函数都接受一个或两个标准参数:
QWidget * parent = \ nullptr
是新widget的父级。 如果它是None(默认值),则新的widget将是一个窗口。 如果不是,它将是父级的子级,并且受父级的几何形状限制(除非您将Window指定为window flag)。Qt :: WindowFlags f = 0
(如果有)设置窗口flag; 默认值几乎适用于所有widget,但是要获取例如没有窗口系统框架的窗口,必须使用特殊flag。
QWidget有许多成员函数,但是其中一些没有直接的功能。 例如,QWidget具有font属性,但从未使用过它。 有许多子类提供了真正的功能,例如QLabel,QPushButton,QListWidget和QTabWidget。
事件
窗口小部件响应通常由用户操作引起的事件。 Qt通过使用包含有关每个事件信息的QEvent子类的实例调用特定的事件处理函数来将事件传递给窗口小部件。
如果您的窗口小部件仅包含子窗口小部件,则可能不需要实现任何事件处理程序。 如果您想在子窗口小部件中检测到鼠标单击,请在窗口小部件的mousePressEvent()中调用子窗口的underMouse()函数。
Scribble示例实现了一系列事件,以处理鼠标移动,按钮按下和窗口大小调整。
您将需要提供自己的窗口小部件的行为和内容,但是这里是与QWidget相关的事件的简要概述,从最常见的事件开始:
每当需要重新绘制小部件时,都会调用paintEvent()。每个显示自定义内容的小部件都必须实现它。使用QPainter的绘画只能在paintEvent()或paintEvent()调用的函数中进行。
调整窗口小部件的大小后,将调用resizeEvent()。
当鼠标光标在窗口小部件内时,或者当窗口小部件使用grabMouse()抓住鼠标时,按下鼠标按钮将调用mousePressEvent()。在不释放鼠标的情况下按下鼠标,实际上与调用catchMouse()相同。
释放鼠标按钮时,将调用mouseReleaseEvent()。小部件在收到相应的鼠标按下事件时会收到鼠标释放事件。这意味着,如果用户在小部件内按下鼠标,然后在释放鼠标按钮之前将鼠标拖到其他位置,则小部件会收到释放事件。有一个例外:如果在按住鼠标按钮的同时出现弹出菜单,则该弹出窗口会立即窃取鼠标事件。
当用户双击窗口小部件时,将调用mouseDoubleClickEvent()。如果用户双击,则小部件会收到一个鼠标按下事件,一个鼠标释放事件,(一个鼠标点击事件),第二次鼠标按下,该事件以及最后一个第二次鼠标释放事件。 (如果在此操作期间鼠标未保持稳定,则可能还会收到一些鼠标移动事件。)在第二次单击到达之前,无法将单击与双击区分开。 (这就是为什么大多数GUI书籍都建议双击是单击的扩展,而不是触发其他操作的原因之一。)
接受键盘输入的小部件需要重新实现一些事件处理程序:
每当按下某个键时,就会调用keyPressEvent();按住该键的时间足以使其自动重复时,会再次调用keyPressEvent()。 Tab和Shift + Tab键仅在焦点更改机制未使用时才传递给小部件。要强制这些键由您的小部件处理,必须重新实现event()。
当窗口小部件获得键盘焦点时会调用focusInEvent()(假设您已调用setFocusPolicy())。行为良好的小部件表示它们以清晰但谨慎的方式拥有键盘焦点。
当小部件失去键盘焦点时,将调用focusOutEvent()。
您可能还需要重新实现一些不太常见的事件处理程序:
只要在按住鼠标按钮的同时移动鼠标,就会调用mouseMoveEvent()。这在拖放操作期间很有用。如果调用setMouseTracking(true),即使没有按下任何按钮,也将获得鼠标移动事件。 (另请参见拖放指南。)
每当释放键并按住键时(如果键是自动重复的),都会调用keyReleaseEvent()。在这种情况下,小部件每次重复都会收到一对按键释放和按键事件。 Tab和Shift + Tab键仅在焦点更改机制未使用时才传递给小部件。要强制这些键由您的小部件处理,必须重新实现event()。
每当用户在小部件具有焦点的情况下转动鼠标滚轮时,就会调用wheelEvent()。
当鼠标进入小部件的屏幕空间时,将调用enterEvent()。 (这不包括小部件的任何子级拥有的屏幕空间。)
当鼠标离开窗口小部件的屏幕空间时,将调用LeaveEvent()。如果鼠标进入子窗口小部件,则不会导致LeaveEvent()。
当窗口小部件已相对于其父级移动时,将调用moveEvent()。
当用户关闭窗口小部件时(或调用close()时),将调用closeEvent()。
Type文档中还描述了一些相当模糊的事件。 要处理这些事件,您需要直接重新实现event()。
event()的默认实现处理Tab和Shift + Tab(以移动键盘焦点),并将其他大多数事件传递给上述更专业的处理程序之一。
事件及其传递机制在事件系统中介绍。
类参数:
class QWidget([parent=None[, f=Qt.WindowFlags()]])
param f
WindowFlagsparam parent
QWidget
构造一个小部件,它是父级的子级,并将小部件标志设置为f。
如果parent为None,则新窗口小部件将成为一个窗口。 如果parent是另一个小部件,则此小部件将成为parent内的子窗口。 删除其父项时,将删除新的窗口小部件。
小部件标志参数f通常为0,但可以将其设置为自定义窗口框架(即parent必须为None)。 要自定义框架,请使用由任何窗口标志的按位“或”组成的值。
如果将子窗口小部件添加到已经可见的窗口小部件,则必须显式显示子窗口以使其可见。
请注意,Qt的X11版本可能无法在所有系统上提供样式标志的所有组合。 这是因为在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() # 让控件在桌面上显示出来。控件在内存里创建,之后才能在显示器上显示出来。
sys.exit(app.exec_()) # 确保主循环安全退出
结果:
python PyQt5.QtWidgets.QWidget类相关推荐
- python PyQt5.QtWidgets.QApplication类(sys.argv)(app应用对象类)
官方文档 class QApplication QApplication(arg__1) Parametersarg__1 – list of strings QApplication专为QGuiAp ...
- python PyQt5 QtWidgets.QWidget.setLayout()(将布局中的小部件重新父级化,以将窗口作为父级)
https://doc.qt.io/qtforpython/PySide2/QtWidgets/QWidget.html?highlight=setlayout#PySide2.QtWidgets.P ...
- python PyQt5 QtWidgets.QWidget.size()函数 QSize
查官方文档,跳到了QSize https://doc.qt.io/qtforpython/PySide2/QtWidgets/QWidget.html?highlight=size#PySide2.Q ...
- python PyQt5.QtWidgets.QWidget.mouseMoveEvent()函数
文章目录 官方介绍 官方介绍 https://doc.qt.io/qtforpython/PySide2/QtWidgets/QWidget.html?highlight=mousemoveevent ...
- python PyQt5 QtWidgets.QAbstractSlider类(QScrollBar,QSlider和QDial之类的小部件的公共超类)
https://doc.qt.io/qtforpython/PySide2/QtWidgets/QAbstractSlider.html?highlight=valuechanged#qabstrac ...
- python读取 application_python PyQt5.QtWidgets.QApplication类(sys.argv)(app应用对象类)...
class QApplication QApplication(arg__1) Parameters arg__1 – list of strings QApplication专为QGuiApplic ...
- python PyQt5 QtWidgets.QAbstractSlider.valueChanged()
https://doc.qt.io/qtforpython/PySide2/QtWidgets/QAbstractSlider.html?highlight=valuechanged#PySide2. ...
- python PyQt5 QtCore.QPointF类、QPointF类与QPoint类区别
文章目录 官方文档 QPointF类与QPoint类区别 官方文档 https://doc.qt.io/qtforpython/PySide2/QtCore/QPointF.html?highligh ...
- python PyQt5.QtWidgets.QApplication().exec_()函数 QCoreApplication.exec_()(进入主事件循环并等待直到调用exit()为止)
搜索的时候没找着QApplication().exec_()函数,用QCoreApplication.exec_()替代一下? 链接:https://doc.qt.io/qtforpython/PyS ...
最新文章
- 惠普HP unix命令大全
- 机器学习算法优缺点改进总结
- 主持人李咏在美国去世 妻子哈文:永失我爱
- leetcode 旋转数组
- 小程序showModal 可配置文字
- 元胞机模拟量子计算机,我国量子计算和量子模拟研究取得新突破
- python 字符串加密 唯一数字_python实现字符串加密 生成唯一固定长度字符串
- html文件用的那个版本,html – 使用Django进行静态文件版本控制
- 8.python之面相对象part.6(反射__call__,__setattr__,__delattr__,__getattr__)
- 第四季-专题2-U-Boot新手入门
- 114.二叉树展开为链表
- muse计算机术语,muse2.7制谱软件使用教程.doc
- CameraLink简介
- android吃鸡闪退,绝地求生刺激战场iPhone6/6P闪退怎么办
- Latex论文写作各种小问题
- 笔记本显示宽带无法连接服务器,笔记本电脑连接不上网络怎么解决
- 语音、图像和视频数据的格式
- 基于python的学生信息管理系统文献综述_学生信息管理系统的文献综述
- 分享 | 全职在家工作/读书应该如何保持效率
- 手机里tencent文件夹能删吗_【我要删除tencent文件夹】手机删了tencent文件夹_tencent什么文件夹...