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

从QMainWindow geometry()获取错误的位置

从QMainWindow geometry()获取错误的位置是因为geometry()方法返回的是窗口在屏幕上的位置和大小,而不是窗口内容区域的位置和大小。如果想要获取窗口内容区域的位置和大小,应该使用QMainWindow centralWidget()方法获取窗口的中心部件,然后再使用QWidget geometry()方法获取中心部件的位置和大小。

QMainWindow是Qt框架中的一个主窗口类,用于创建具有菜单栏、工具栏、状态栏等功能的应用程序窗口。geometry()方法用于获取窗口在屏幕上的位置和大小,返回一个QRect对象,包含窗口的左上角坐标和宽高信息。

然而,如果想要获取窗口内容区域的位置和大小,应该使用centralWidget()方法获取窗口的中心部件。中心部件是一个QWidget对象,可以包含其他的子部件,例如按钮、文本框等。然后,可以使用geometry()方法获取中心部件的位置和大小,同样返回一个QRect对象。

以下是一个示例代码,展示如何正确获取窗口内容区域的位置和大小:

代码语言:python
代码运行次数:0
复制
from PyQt5.QtWidgets import QMainWindow, QWidget, QApplication
from PyQt5.QtCore import QRect

class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("My Main Window")
        self.setGeometry(100, 100, 500, 500)

        central_widget = QWidget(self)
        self.setCentralWidget(central_widget)

        central_widget.setGeometry(50, 50, 400, 400)

    def get_content_geometry(self):
        central_widget = self.centralWidget()
        content_geometry = central_widget.geometry()
        return content_geometry

if __name__ == "__main__":
    app = QApplication([])
    window = MyMainWindow()
    window.show()

    content_geometry = window.get_content_geometry()
    print("Content Geometry:", content_geometry)

    app.exec_()

在上述示例中,我们创建了一个自定义的主窗口类MyMainWindow,并设置了窗口的标题和位置。在构造函数中,我们创建了一个中心部件central_widget,并将其设置为主窗口的中心部件。然后,我们通过get_content_geometry()方法获取中心部件的位置和大小,并打印输出。

注意,这里的位置和大小是相对于窗口的内容区域而言的,而不是相对于屏幕。如果需要获取相对于屏幕的位置和大小,可以使用QWidget的mapToGlobal()方法将内容区域的位置转换为屏幕坐标。

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

相关·内容

MySQL中地理位置数据扩展geometry的使用心得

Geometry主要相关类 2.1 Geometry   Geometry是所有此扩展中类型得基类,其他类型如Point,LineString,Polygon都是Geometry的子类。...几何对象创建函数   MySQL表中的几何对象有它自己的内部格式,我们需要将几何对象从方便输入的WKT格式转换为其内部格式,才能进行进一步的存储,计算等。   ...常用函数 6.1 获取几何对象属性的函数   6.1.1 Geometry     -->Dimension(g)       返回对象g的维数     -->Envelope(g)       返回对象...(poly)       返回对象poly的neihuan个数 6.2 从现成几何对象创建新的对象 6.2.1 st_union(g1, g2)   将g1和g2合并为一个集合类对象 SET @g1...空间索引 对表中的geometry类型的字段进行索引可以优化搜索,MySQL中通过对Geometry对象的MBR创建索引 创建: CREATE SPATIAL INDEX i_shape ON `t_geo_test

3.1K10

获取图片的位置(距离最顶部)

老规矩,先说需求: 需求是想要获取到图片的位置,然后根据图片的位置添加一个按钮 点击这个按钮 获取图片的信息 正常来讲 这样的需求 先获取dom 再遍历dom 往里面塞按钮就可以了 但是,考虑到各型各色的网站限制和...dom变化,这样就有很多问题, 所以就需要根据图片的当前位置(元素距离顶部的位置(包括滚动条),和左边的位置)来动态的添加这个按钮 因为是hover触发的 所以这个按钮只有一个 (这样的做法是参考阿里以图搜图的功能做的...) ok 需求明白了之后 开始说怎么做 先说公式代码:( top: 图片距离顶部的高度+滚动条的高度,left:图片距离左侧的高度) 1.滚动条的高度     // 获取 当前 滚动条的长度, 水平 ...:(主要方法:dom.getBoundingClientRect)       // 获取 dom 到视口左侧和顶部的相对位置       function getDomToViewPosition(id...进行定位吧 举例看下面这张图: 图片 这张例图的距离left为:20 距离上为:266.515625 当前滚动条的高度为:4683 按照我们的公式 我们动态添加的按钮的位置应该是: top:4683

2K10
  • PyQt5-屏幕坐标系的了解和基本使用

    4.1 直接获取这个表示的是从窗口左上角计算;以下是 窗口的横纵坐标 和 工作区宽高# -*- coding:utf-8 -*-# 作者:虫无涯# 日期:2023/11/4 # 文件名称:test023...QApplication(sys.argv) win = ScreenGeo() # win.show() sys.exit(app.exec_())效果如下:图片4.2 通过坐标系获取这个表示从工作区左上角计算...("通过坐标系获取坐标") print(f"工作区横坐标:{self.w.geometry().x()}") print(f"工作区纵坐标:{self.w.geometry(...Frame坐标这个表示从整个窗口和菜单的高度;以下是获取窗口的横纵坐标 以及 窗口的宽高;# -*- coding:utf-8 -*-# 作者:虫无涯# 日期:2023/11/4 # 文件名称:test023...("通过坐标系获取坐标") print(f"工作区横坐标:{self.w.geometry().x()}") print(f"工作区纵坐标:{self.w.geometry(

    41530

    用Javascript获取页面元素的位置

    二、获取网页的大小 网页上的每个元素,都有clientHeight和clientWidth属性。...document.documentElement.scrollHeight,                 document.documentElement.clientHeight)       }     }   } 四、获取网页元素的绝对位置...所以,只需要将这两个值进行累加,就可以得到该元素的绝对坐标。 (图二 offsetTop和offsetLeft属性) 下面两个函数可以用来获取绝对位置的横坐标和纵坐标。   ...五、获取网页元素的相对位置 网页元素的相对位置,指该元素左上角相对于浏览器窗口左上角的坐标。 有了绝对位置以后,获得相对位置就很容易了,只要将绝对坐标减去页面的滚动条滚动的距离就可以了。...六、获取元素位置的快速方法 除了上面的函数以外,还有一种快速方法,可以立刻获得网页元素的位置。 那就是使用getBoundingClientRect()方法。

    3.3K70

    Android利用自带的位置服务,获取当前位置信息

    笔者项目里,需要获取用户的当前位置信息,因为没有接地图SDK,打算用原生自带的位置服务去做。操作了一下,踩了几个大坑,总算是幸不辱命。这里做个记录,顺便分享给大家。...Thread(Runnable { val serviceString = Context.LOCATION_SERVICE// 获取的是位置服务...: String {//一定要异步,否则获取不到 //用来接收位置的详细信息 var result: List?...爬坑指南: 1.initLocation()这个方法,可以看到笔者是放在线程里跑的,一定要这样做,否则拿到经纬度之后,无法通过经纬度获取到位置信息。笔者在这里纠结了许久。...2.在通过经纬度获取位置信息时,获取到的result是个集合,他对你的当前位置做了不同维度的描述,越后面的,描述得越精确。

    3.3K00

    PyQt5-如何设置主窗口居中?退出应用程序如何操作?

    让主窗口居中,其实就是让窗口的左右边缘到左右屏幕距离相等,让窗口的上下边缘到上下屏幕的距离相等;主要是需要进行计算和移动工作;可以使用 QDesktopWidget 类来获取屏幕的大小和位置信息,然后根据这些信息计算出窗口的位置和大小...:screen = QDesktopWidget().screenGeometry()1.2 获取窗口坐标使用geometry()方法获取到当前窗口的坐标:size = self.geometry()1.3...屏幕坐标减窗口坐标对应计算:l = (screen.width() - size.width()) / 2t = (screen.height() - size.height()) / 21.4 移动位置最后就是移动窗口到计算好的位置即可..., QDesktopWidgetclass CenterForm(QMainWindow): def __init__(self): super()....size = self.geometry() l = (screen.width() - size.width()) / 2 t = (screen.height

    1.1K40

    iOS UITableView获取特定位置的cell

    偏移量的值实际上可以代表当时处于tableView顶部的cell在tableView上的相对位置, 那么我们就可以根据偏移量获得处于顶部的cell的indexPath。...inSection:indexPath.section] atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; } } 二、 获取处于...UITableView中心的cell [获取UITableView中心线cell.gif] 获取处于tableView中间cell的效果,用上述方案一比较麻烦:要考虑可见cell 的奇、偶个数问题,还有...cell是否等高的情况;方案二用起来就快捷方便多了,取的cell的位置的纵坐标相当于在偏移量的基础上又增加了tableView高度的一半。...代码如下: - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ //获取处于UITableView中心的cell //系统方法返回处于

    4.8K80

    如何获取对方IP,查询对方的位置

    首先运行OutLook express程序,并单击工具栏中的“接受全部邮件”按钮,将朋友发送的邮件接受下来,再打开收件箱面,找到朋友发送过来的邮件,并用鼠标右键单击之,从弹出的右键菜单中,执行“属性”命令...当然,如果你使用的是其他邮件客户端程序的话,查看发件人IP地址的方法可能与上面不一样;例如要是你使用foxmail来接受好友邮件的话,那么你可以在收件箱中,选中目标邮件,再单击菜单栏中的“邮件”选项,从弹出的下拉菜单中选中...例如,借助一款名为WhereIsIP的搜查工具,你可以轻松根据对方好友的Web网站地址,搜查得到对方好友的IP地址,甚至还能搜查到对方好友所在的物理位置。...中的Domain Name Whois数据库联系,然后从该数据库中搜查到与该Web网站地址对应的IP地址了。...当然,除了可以知道IP地址外,你还能知道对方好友所在的具体物理位置。

    6.8K30

    iOS UITableView获取特定位置的cell

    偏移量的值实际上可以代表当时处于tableView顶部的cell在tableView上的相对位置, 那么我们就可以根据偏移量获得处于顶部的cell的indexPath。...inSection:indexPath.section] atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; } } 二、 获取处于...UITableView中心的cell 获取UITableView中心线cell.gif 获取处于tableView中间cell的效果,用上述方案一比较麻烦:要考虑可见cell 的奇、偶个数问题,还有cell...是否等高的情况;方案二用起来就快捷方便多了,取的cell的位置的纵坐标相当于在偏移量的基础上又增加了tableView高度的一半。...代码如下: - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ //获取处于UITableView中心的cell //系统方法返回处于

    1.3K30

    JS实现获取鼠标在画布中的位置

    JS实现获取鼠标在画布中的位置 效果展示 概述 本文讲解如何实现我们平时用的画布软件中,怎么获取的我们鼠标时刻在画布中的位置。.../ 用鼠标距离页面的坐标减去盒子在页面中的距离, 得到 鼠标在盒子内的坐标 // 我们生活中常见的画布里面的那个获取鼠标的位置 就是这么实现的 var box = document.querySelector...('.box'); // 获取盒子的元素 box.addEventListener('mousemove', function(e) { // 为盒子添加监听事件 当鼠标在盒子上面的时候.../ 用鼠标距离页面的坐标减去盒子在页面中的距离, 得到 鼠标在盒子内的坐标 // 我们生活中常见的画布里面的那个获取鼠标的位置 就是这么实现的 var box = document.querySelector...('.box'); // 获取盒子的元素 box.addEventListener('mousemove', function(e) { // 为盒子添加监听事件 当鼠标在盒子上面的时候

    6300

    “无法从http:XXXXXX.svc?wsdl获取元数据”错误的解决方法

    昨天在用IIS部署一个WCF服务时,碰到了如下错误: 理解了文档内容,但无法进行处理。   - WSDL 文档包含无法解析的链接。  ...- 基础连接已经关闭: 接收时发生错误。   - 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。   - 远程主机强迫关闭了一个现有的连接。...该错误是在使用svcutil生成client代码时报的错误,服务是部署在IIS7上,部署的过程都是完全教科书式的进行。服务也正常启动了,显示如下内容 已创建服务。...wsdl命令去生成代码,就出现了开头说的那个错误。而如果用visual studio的webdevserver启动,则一切正常。...经过一轮谷百之后,发现网上有很多类似的情况,有的说是因为用了wsHttpBinding协议引起的,或者是元数据没有正确公开,但都不是他们说的情况。后来找到了一篇文章,说的是添加WCF引用的一个陷阱。

    3.5K20

    MYSQL 8 从metadata开始到如何获得语句由于获取锁失败的错误

    p.time and i.trx_mysql_thread_id not in (connection_id(),p.id); 通过这个方式可以将长时间等待metadata lock 不工作的事务从数据库中找出来...,用户的prepare状态会被保持直到XA_COMMIT 或者 XA_ROLLBACK 除了这个问题以外,就是关于如何发现曾经MYSQL 发生过错误,一般的情况MYSQL 5.X我们都是去找到ERROR...LOG ,里面去找寻可能发生的信息,但是MYSQL 8 我们在performance_schema 中已经有了 events_errors 系列,这些表可以让你从各个层面来了解MYSQL 在最近都发生过什么错误...1 event_error_summary_global_by_error 通过这个表,我们查看这个表可以记录的错误的种类有 5017种 select count(distinct error_name...; 以上的这个表,主要是从访问数据库的用户的角度来出发,查看这个用户曾经发生过什么样的错误,我们可以改写一下这个查询的语句,来更精确的对这个账号发生过什么错误进行判断。

    2K30

    html怎么动态获取系统时间_代码实现获取当前的地理位置

    HTML+JS动态获取当前时间 效果图: 说明: JavaScript 中 Date 对象 创建 Date 对象的语法: var myDate=new Date() 常用 Date 对象方法...: 方法 描述 Date() 返回当日的日期和时间 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31) getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)...getMonth() 从 Date 对象返回月份 (0 ~ 11) getFullYear() 从 Date 对象以四位数字返回年份 getHours() 返回 Date 对象的小时 (0 ~ 23)...var month=d.getMonth()+1; //获取月,从 Date 对象返回月份 (0 ~ 11),故在此处+1 var day=d.getDay() //获取日...var days=d.getDate() //获取日期 var hour=d.getHours() //获取小时 var minute=d.getMinutes() //获取分钟

    2.5K10

    详解各种获取元素宽高及位置的属性

    然而,对于可被截断到下一行的行内元素(如 span),offsetTop 和 offsetLeft 描述的是第一个边界框的位置(使用 Element.getClientRects() 来获取其宽度和高度...),而 offsetWidth 和 offsetHeight 描述的是边界框的尺寸(使用 Element.getBoundingClientRect 来获取其位置)。...如果元素的文本方向是从右向左(RTL, right-to-left),并且由于内容溢出导致左边出现了一个垂直滚动条,则该属性包括滚动条的宽度。clientLeft 不包括左外边距和左内边距。...scrollTop Element.scrollTop 属性可以获取或设置一个元素的内容垂直滚动的像素数。...此时,当你从右到左拖动滚动条时,scrollLeft会从0变为负数(这个特性在chrome浏览器中不存在)。

    4K80

    JavaScript 获取鼠标及元素在页面上的位置

    HTML5学堂:JavaScript获取鼠标的位置,大家会想到clientX/Y等属性,灵活的获取鼠标的位置信息,能够便于我们实现各种复杂的页面交互效果,到底还有哪些属性可以获取鼠标的位置信息?...为了能够快速、灵活的获取鼠标位置信息,今天要带着大家来接触的不是利用clientX/Y获取鼠标的位置信息,而是利用了大家可能比较少用的两个属性layerX/Y和offsetX/Y,它们与clientX/...另外,也要跟大家分享一个方法,它能快速的获取元素在页面上的位置信息,不同于之前学过的offsetLeft等属性,它就是——getBoundingClientRect()方法 回顾clientX/Y获取鼠标位置的方式...咱们都知道浏览器的可视区域位置是固定的不发生滚动的,所以,clientX/Y属性获取的鼠标位置不会随页面滚动而改变; 兼容性:所有浏览器都能支持。...,获取到的鼠标位置会存在一堆的小数,如39.66999816894531这样。

    3.4K60

    JavaScript与jQuery获取元素的宽、高和位置

    今天汇总整理了 JavaScript 和 jQuery 获取元素宽高和位置的方法,比较全面,方便自己和需要并搜到此文章的朋友们查看。...鼠标相对于页面的位置 event.pageX :鼠标相对于页面左边缘的距离。 event.pageY :鼠标相对于页面上边缘的距离。...元素的位置偏移量 offset() :返回包含 top 和 left 两个属性的对象,相对于 document 文档的坐标。...position():返回包含top和left两个属性的对象,相对于最近的已定位的包含元素的位置。若无,则相对于document。...浏览器相关宽高 $(window).height() :获取浏览器可视窗口的高度; $(document).height() :获取整个网页文档的高度;当网页高度不足浏览器窗口时,返回的是 $(window

    3.1K00

    分享几个IP获取地理位置的API接口

    :本机IP地址 location:IP所对应的地理位置(中间会有“\t”分隔地区与运营商) loc_client:作用不明 请求示例: Request URL:...返回类型:json 返回值: errno:错误编号(为零则代表成功) errmsg:错误信息 data:查询的IP所对应的地理位置(中间会有“\t”...返回类型:json 返回值: r:是否请求成功 i:查询到的IP地址 c:查询到的IP所对应的地理位置 a:查询到的详细位置(如XX公司)...地址 参数传递方式:GET 返回类型:html 备注:本接口抓包自中国黑客联盟IP定位查询系统 附录 还可以通过抓取源码从几个网站获取IP信息...http://www.hao7188.com/ 此网站获取到的数据比较详细,推荐。

    55K91

    分享几个IP获取地理位置的API接口

    博主找了几个小时的资料,又手动抓取到了几个接口补充进来,应该不能再全了…… 360获取本机IP、地区及运营商 接口地址:http://ip.360.cn/IPShare/info 传递参数:无 返回类型...:json 返回值: greetheader:提示语(如上午好、中午好等) nickname:本机已登录的360账号 ip:本机IP地址 location:IP所对应的地理位置(中间会有“\t”分隔地区与运营商...:错误编号(为零则代表成功) errmsg:错误信息 data:查询的IP所对应的地理位置(中间会有“\t”分隔地区与运营商) 请求示例: Request URL:http://ip.360.cn/IPQuery...IP、地区及所处位置 接口地址:http://www.ip508.com/ip 传递参数: q:要查询的IP地址(为空则查询本机IP) 参数传递方式:GET/POST 返回类型:json 返回值: r:...是否请求成功 i:查询到的IP地址 c:查询到的IP所对应的地理位置 a:查询到的详细位置(如XX公司) 请求示例: Request URL:http://www.ip508.com/ip?

    5.6K10

    第127天:移动端-获取触摸点的位置

    一、移动端轮播图滑动 1、先获取手指在轮播图元素上的滑动方向(左右) (1)手指触摸开始时记录手指所在的坐标X (2)获取界面上的轮播图容器 var $carousels=$('.carousel')...; (3)注册滑动事件 (4)变量重复赋值 (5)结束触摸的一瞬间记录最后手指所在坐标X (6)比较开始和结束的坐标大小 (7)控制精度 获取每次手指滑动的距离,当距离大于一定值时,就认为有方向变化...       手指头在屏幕上滑动触发的事件 3.touchend         当手指从屏幕上离开的时候触发 利用jquery配合使用方法如下: $("#demoid").bind('touchstart...touchstart、touchmove、touchend三种事件下的鼠标位置点获取: (1)touchstart事件下获取:e.originalEvent.targetTouches[0].pageX...[0],所以位置.pageX .pageY就ok了 (2)touchend事件的获取:e3.originalEvent.changedTouches[0].pageX 下面是其他的一些介绍: 每个Touch

    1.5K20
    领券