首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在PyQt5中相对于父窗口移动子窗口?

在PyQt5中,如果你想要相对于父窗口移动子窗口,你可以使用move()方法来设置子窗口的位置。这个方法接受一个QPoint对象作为参数,表示子窗口左上角的新位置。

以下是一个简单的例子,展示了如何创建一个父窗口和一个子窗口,并将子窗口相对于父窗口移动到特定位置:

代码语言:txt
复制
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 设置父窗口的标题和初始大小
        self.setWindowTitle("父窗口")
        self.resize(400, 300)

        # 创建子窗口
        self.child_window = QWidget(self)
        self.child_window.setWindowTitle("子窗口")
        self.child_window.resize(200, 150)

        # 将子窗口相对于父窗口移动到 (50, 50) 的位置
        self.child_window.move(50, 50)

        # 显示父窗口
        self.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_window = MainWindow()
    sys.exit(app.exec_())

在这个例子中,MainWindow类继承自QMainWindow,并在其构造函数中创建了一个子窗口self.child_window。通过调用move()方法并传入坐标(50, 50),子窗口的左上角被设置在了父窗口内部坐标为(50, 50)的位置。

如果你想要在运行时动态地移动子窗口,你可以连接一个事件处理器到父窗口的鼠标事件,例如mousePressEventmouseMoveEvent,并在事件处理器中更新子窗口的位置。

例如,以下代码展示了如何在鼠标点击时将子窗口移动到鼠标点击的位置:

代码语言:txt
复制
from PyQt5.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # ...(省略之前的代码)...

        # 连接鼠标点击事件到自定义的事件处理器
        self.mousePressEvent = self.on_mouse_press

    def on_mouse_press(self, event):
        # 检查是否按下了鼠标左键
        if event.button() == Qt.LeftButton:
            # 将子窗口移动到鼠标点击的位置
            self.child_window.move(event.pos())

# ...(省略之后的代码)...

在这个例子中,on_mouse_press方法会在鼠标左键点击父窗口时被调用,并将子窗口移动到点击的位置。

请注意,这些代码示例假设你已经安装了PyQt5库。如果还没有安装,你可以使用pip来安装它:

代码语言:txt
复制
pip install PyQt5

如果你在使用PyQt5时遇到了具体的问题,比如子窗口无法移动或者移动后的位置不正确,请确保你的父窗口和子窗口都已经正确地显示出来,并且没有其他的布局管理器或者样式设置干扰了窗口的位置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 基础窗口控件QWidget简介

    他并不是你所想象的用代码去按像素调整窗口,PyQt5的布局管理器是根据左右布局、上下布局或者栅格布局自动帮你调整到对应的位置,你只需要进行一些微调就可以了。...窗口坐标系统   就像大多数GUI系统一样,PyQt5使用的坐标系统也是以左上角为原点(0, 0)。...在PyQt5中获取控件位置有以下三种方式: QWidget直接提供的成员函数:x(), y()获得窗口左上角的坐标,width(), height()获取窗口的宽度和高度。...对于主窗口控件,不包含边框的部分就是客户区,我们可以在其中添加子控件。 不包含外边框 客户区的大小是一个QRect类。...,这样在移动位置时才会以父控件为参照 btn = QPushButton(main_widget) btn.setText("我是按钮") btn.setFixedSize(100

    5.4K40

    Python Qt5 入门教程

    在Ubuntu中,可以通过以下命令进行安装: sudo apt-get install qt5-default 接下来,使用pip命令安装PyQt5: pip install PyQt5 在Windows...操作系统中,可以通过官方网站下载安装文件,并按照提示进行安装。...创建第一个窗口 创建第一个窗口非常简单,只需要导入PyQt5库并实例化QApplication和QWidget即可。...,并在父控件中显示 设置窗口标题 显示窗口 进入事件循环 运行以上代码,将会弹出一个名为'Label Example'的窗口,并显示'Hello World'文本。...,并在父控件中显示 连接按钮的clicked信号到on_click事件处理程序函数 设置窗口标题 显示窗口 进入事件循环 运行以上代码,将会弹出一个名为'Button Example'的窗口,并显示一个名为

    76320

    【Python篇】PyQt5 超详细教程——由入门到精通(序篇)

    __init__() # 调用父类 QMainWindow 的初始化方法 self.setWindowTitle("PyQt5 第一个窗口") # 设置窗口标题 #...self 参数:将标签关联到当前窗口(MainWindow),即将其设置为窗口的子控件。...2.7 总结 在这一部分中,我们学习了如何在 PyQt5 中使用布局管理器来组织窗口内的控件。我们主要介绍了几种常见的布局方式: QVBoxLayout:垂直排列控件。...接着,介绍了布局管理器(如 QVBoxLayout 和 QHBoxLayout),并通过它们组织界面中的控件。...最后,我们深入探讨了 PyQt5 中的常用控件,如 QLabel、QPushButton、QLineEdit 和 QCheckBox,展示了如何使用这些控件处理基本的用户交互。

    9.6K24

    【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)

    在 PyQt5 中,你可以使用 matplotlib 来生成图表,并将这些图表嵌入到 PyQt5 的窗口中。...FigureCanvas 是一个特殊的组件,它允许将 matplotlib 的绘图窗口嵌入到 PyQt5 界面中。首先,我们来看如何在 PyQt5 窗口中嵌入一个简单的折线图。...7.3 动态生成图表 在某些应用场景中,图表需要根据用户的输入或数据的变化实时更新。接下来我们展示如何在 PyQt5 中动态生成和更新 matplotlib 图表。...7.5 总结 在这一部分中,我们学习了如何在 PyQt5 中嵌入 matplotlib 图表,实现数据的可视化展示。...7-8部分总结:图表与对话框 在第7至第8部分中,我们探讨了如何在 PyQt5 中使用 matplotlib 实现数据的可视化,并展示了如何在界面中嵌入折线图、柱状图、饼图等多种图表。

    61511

    Python:PyQt学习

    ,父对象只能设置一个 parent() 获取父对象 children() 获取所有直接子对象 findChild(参数1,参数2,参数3) 获取某一个指定类型和名称的子对象 参数1: 类型 QObject...顶层控件则参照桌面 尺寸位置 尺寸获取API x() 相对于父控件的x位置,没有父控件则相对于桌面的x位置 y()...控件的高度,不包含任何窗口框架 size() width和height的组合,不包含任何窗口框架 geometry() 用户区域相对于父控件的位置和尺寸组合...父子关系 API childAt(x, y) 获取在指定坐标的控件 parentWidget() 获取指定控件的父控件 childrenRect() 所有子控件组成的边界矩形 案例 创建窗口, 包含若干...,要求无边框,无标题,窗口不透明度0.9,自定义最小化,最大化,关闭按钮,支持拖拽用户区移动。

    10.7K10

    【CSS】CSS 总结 ⑦ ( 定位 | 静态定位 | 相对定位 | 绝对定位 | 子绝父相 | 固定定位 | 使用绝对定位设置水平垂直居中 | 堆叠顺序 | 显示模式 | 元素隐藏 ) ★

    , 如 : left: 10px ; 右侧偏移量 : 盒子模型 距离 父容器 右边线 的长度 , 如 : right: 10px ; 4、定位模式 定位模式 : CSS 中通过 position 属性设置定位模式...其在 标准流中的位置 设置的 ; 如 : 盒子模型 在标准流 中 , 原来的位置是 (0 , 0) , 设置了相对定位 , 就是 相对于原来的位置 (0, 0) 进行 边偏移 后的位置 ; 下面的示例中...为基准 , 设置 边偏移 ; 为 子元素 添加 绝对定位 , 如果 父容器有定位 , 则相对于父容器的坐标进行定位 ; 如果 父容器没有定位 , 则相对于浏览器左上角位置进行定位 ; 再次引申 , 如果父容器没有定位..., 子容器也会相对于 父容器 进行定位 ; 7、绝对定位特点 绝对定位 以 带有定位的 父级元素 为基准 , 通过 边偏移 移动位置 ; 如果 绝对定位 的元素 的 父级元素 没有定位 , 那么会 一直向上查找有定位的父级元素...固定在屏幕中的某个位置 , 即使拖动滚动条 , 固定定位的元素仍然保持位置不变 ; 固定定位 完全脱离 标准流 , 不占用 布局中的位置 , 漂浮在任何元素上方 ; 固定定位 只相对于 浏览器可视窗口

    35910

    定位(position)

    其次,每次移动的位置,是以自己的左上角为基点移动(相对于自己来移动位置) 就是说,相对定位的盒子仍在标准流中,它后面的盒子仍以标准流方式对待它。...父级有定位 绝对定位是将元素依据最近的已经定位(绝对、固定或相对定位)的父元素(祖先)进行定位。 子绝父相 这个“子绝父相”太重要了,是我们学习定位的口诀,时时刻刻记住的。...就是说, 子级是绝对定位,父亲只要是定位即可(不管父亲是绝对定位还是相对定位,甚至是固定定位都可以),就是说, 子绝父绝,子绝父相都是正确的。...可以得出如下结论: 因为子级是绝对定位,不会占有位置, 可以放到父盒子里面的任何一个地方。 父盒子布局时,需要占有位置,因此父亲只能是 相对定位. 这就是子绝父相的由来。...) 绝对定位absolute 完全脱标,不占有位置 可以 相对于定位父级移动位置(拼爹型) 固定定位fixed 完全脱标,不占有位置 可以 相对于浏览器移动位置(认死理型) 定位模式转换 跟 浮动一样

    1.3K30

    CSS-定位(position)

    自动定位(默认定位方式) relative 相对定位,相对于其原文档流的位置进行定位 absolute 绝对定位,相对于其上一个已经定位的父元素进行定位 fixed 固定定位,相对于浏览器窗口进行定位...其次,每次移动的位置,是以自己的左上角为基点移动(相对于自己来移动位置) 就是说,相对定位的盒子仍在标准流中,它后面的盒子仍以标准流方式对待它。...# 父级有定位 绝对定位是将元素依据最近的已经定位(绝对、固定或相对定位)的父元素(祖先)进行定位。 # 子绝父相 这个“子绝父相”太重要了,是我们学习定位的口诀。...子绝父相就是指子元素设置绝对定位,而父元素设置相对定位。 换句话说:如果要对一个子元素使用定位的话,让子元素(绝对定位)以其父元素(相对定位)为标准来定位。...自恋型) 绝对定位absolute 完全脱标,不占有位置 可以 相对于定位父级移动位置(拼爹型) 固定定位fixed 完全脱标,不占有位置 可以 相对于浏览器移动位置(认死理型)

    1.5K10

    PyQt5的主窗口QMainWindow简介

    看过上一篇我们知道,在PyQt5中了,所有的控件都是继承自。在桌面应用当中,我们常用的软件都会包含一个主窗口。主窗口就是承载所有控件的一个窗体。...模态指的是窗口打开的时候,它底下的父窗口是不可操作的;非模态就是当我们打开一个子窗口的时候,其下面的窗口也是可以操作的。...如果不确定或者说他会作为顶层窗口(没有父窗口的窗口就是顶层窗口)或者嵌入到其他窗口中,那么就可以使用最根本的基类QWidget类。...主窗口的使用 在这里我们先看一下最常用的主窗口类QMainWindow,它为用户提供了一个应用程序框架,包含有自己的布局,可以在布局中添加控件。 看一下下面的这张图片就是QMainWindow。...,将其设置为主窗口的子控件QTextEdit(self.widget),创建的时候指定父控件,当然也可以在创建控件以后使用self.textEdit.setParent(self.widget)来设置其父窗口

    4K31

    讲解pyqt5 opengl demo

    在本篇文章中,我们将讲解如何使用 PyQt5 创建一个简单的 OpenGL Demo。步骤1: 安装 PyQt5首先,我们需要安装 PyQt5 库。...在 __init__ 方法中,我们创建了一个 QOpenGLWindow 实例,并将其设置为中心窗口部件。最后,我们设置了窗口的标题为 "PyQt5 OpenGL Demo"。...这个示例演示了如何在OpenGL窗口中绘制2D图形,并且响应鼠标事件实现用户交互。你可以根据实际需要进一步扩展和定制功能,添加更多的绘制元素和功能。...希望这个示例对你理解如何在实际应用中使用PyQt5和OpenGL有所帮助。PyQt5和OpenGL结合可以实现更复杂的图形和动画效果,让你的应用更加生动和互动。...下面是对PyQt5的一些详细介绍:跨平台支持:PyQt5基于Qt库开发,因此可以实现跨平台支持,可以在不同操作系统(如Windows、MacOS、Linux等)上运行。

    57210

    Android layout属性大全

    layout_centerHrizontal 水平居中         android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中...:clickable定义是否可点击            android:longClickable定义是否可长点击            android:saveEnabled设置是否在窗口冻结时(如旋转屏幕...)保存View的数据            android:filterTouchesWhenObscured所在窗口被其它可见窗口遮住时,是否过滤触摸事件            android:keepScreenOn...        android:translationY垂直方向的移动距离         android:transformPivotX相对于一点的水平方向偏转量         android:transformPivotY...android:fitsSystemWindows设置布局调整时是否考虑系统窗口(如状态栏)         android:scrollbarFadeDuration设置滚动条淡入淡出时间

    2.2K90

    【Unity3D】3D 物体概念 ① ( 轴心点概念 | 物体的父子关系 | 子节点相对坐标 )

    , 在 Hierarchy 层级窗口 中 , 拖动物体 B 到 物体 A 中 , 如下图所示 , 拖动后 物体 B 就属于 物体 A 的一部分了 , 这两个物体有如下特性 : 物体 A 是 物体 B...的 父节点 ; 拖动 父物体 A , 子物体 B 也会 随着一起移动 ; 旋转 父物体 A , 子物体 B 也会 随着一起旋转 ; 缩放 父物体 A , 子物体 B 也会 随着一起缩放 ; 如果 删除...; 在 父子节点 中 , 子节点存在一个相对于父节点 的 相对坐标 ; 选中 游戏物体 GameObject 后 , 在 右侧 Inspector 检查器窗口 中看到的 坐标 , 都是 相对坐标 ,...是相对于父容器节点的坐标 ; 物体 A 处于场景中 , 则 父物体 就是整个游戏场景 , 其坐标就是相对于 世界中心 的坐标 ; 物体 B 是 物体 A 的子节点 , 则 父物体 就是 物体 A , 其坐标就是相对于...父物体 轴心的坐标 ; 移动 / 旋转 父物体 时 , 子物体的 坐标 和 角度 都不会发生改变 ;

    1.4K20

    pyqt5之简单窗口的创建

    ,之前用tkinter写了一个简单的python入门教程的exe,基本都是面向过程的编程思想, 很少将函数式编程思想和面向对象的思想,在学习pyqt5的过程中,希望培养面向对象编程的思想!...PyQT4 and Pyqt5 fifferences 不兼容pyqt4, 模块被改写,新模块的引入 三.简单窗口的建立 没有父类的组件是顶级窗口。...见例子 四.关闭窗口 QPushButton(string text, QWidget parent = None) text参数是将显示在按钮中的内容。...parent参数是一个用来放置我们按钮的组件 qbtn.clicked.connect(QCoreApplication.instance().quit) 在PyQt5中,事件处理系统由信号...必须创建一个QApplication对象 15 16 w = QWidget() # 没有父类的widget将被作为窗口使用 17 w.resize(250, 150) #

    1.8K20

    前端成神之路-定位

    小黄色块在图片上移动,吸引用户的眼球。 ? 2. 当我们滚动窗口的时候,盒子是固定屏幕某个位置的 ?...(自恋型) 效果图: 相对定位的特点:(务必记住) 相对于 自己原来在标准流中位置来移动的 原来在标准流的区域继续占有,后面的盒子仍然以标准流的方式对待它。...子绝父相 —— 子级是绝对定位,父级要用相对定位。 子绝父相是使用绝对定位的口诀,要牢牢记住! 疑问:为什么在布局时,子级元素使用绝对定位时,父级元素就要用相对定位呢?...结论:父级要占有位置,子级要任意摆放,这就是子绝父相的由来。...不能 基本单独使用 绝对定位absolute 完全脱标,不占有位置 相对于定位父级移动位置 能 要和定位父级元素搭配使用 固定定位fixed 完全脱标,不占有位置 相对于浏览器移动位置 能 单独使用,

    1.9K20

    CSS布局(三) 布局模型

    相对于以前的位置移动,偏移前的位置保留不动。在使用相对定位时,就算元素被偏移了,但是他仍然占据着它没偏移前的空间。...绝对定位 如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位...如果不存在这样的包含块(就是它前面的div并没有设置定位的属性),则相对于body元素,即相对于浏览器窗口。...由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的显示大小,因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响...z-index比父元素小,但是子元素仍然出现在父元素上方 ?

    2.3K71

    CSS中定位的介绍及使用

    代码:postion:relative 需要配合访问属性来移动 相对于自己原来的位置进行移动 在页面中占位置→没有脱标 应用场景 :配合绝对定位组cp(子绝父相),用于小范围的移动。...绝对定位: 拼爹型定位,相对于非静态定位的父元素进行移动。...代码:position:absolute 需要配合方位属性实现移动 默认相对于浏览器可视区域进行移动 在页面中不占位置→已经脱标 应用场景 :配合相对定位组CP(子绝父相) 绝对定位相对于谁移动?...祖先元素中没有定位 → 默认相对于浏览器进行移动 祖先元素中有定位 → 相对于最近的 有定位 的祖先元素进行移动 固定定位: 相对于浏览器窗口进行定位,脱离原来的文档流。...代码:position:fixed 子绝父相 含义: 子元素用绝对定位,父元素用相对定位。 应用场景: 让子元素相对于父元素进行自由移动。 好处: 父元素是相对定位,对网页布局影响最小。

    58620

    【Python篇】PyQt5 超详细教程——由入门到精通(终篇)

    ,如标签。...10.2 QVBoxLayout:垂直布局 QVBoxLayout 是 PyQt5 中的垂直布局管理器,它将控件从上到下垂直排列。控件会根据窗口的大小自动调整。...QWidget 容器 PyQt5 中的布局管理器必须被设置在某个控件(如 QWidget)上。...自适应界面 控件大小策略使得界面能够根据窗口大小进行自动调整,保证在不同尺寸的窗口下都能保持良好的布局。 10.8 总结 在这一部分中,我们详细介绍了 PyQt5 中的布局管理器及其使用策略。...这次 PyQt5的学习不仅是对技术的提升,也是对思维的一次锻炼,它教会了我们如何在复杂中找到解决问题的思路,也让我们对未来更加复杂的项目开发充满信心。

    1.4K12
    领券