首页
学习
活动
专区
工具
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()方法将内容区域的位置转换为屏幕坐标。

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

相关·内容

python qtdesigner 拖拽工具

在PyQt中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成。Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。Qt Designer中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时查看控件效果。Qt Designer生成的.ui文件(实质上是XML格式的文件)也可以通过pyuic5工具转换成.py文件。 Qt Designer随PyQt5-tools包一起安装,其安装路径在 “Python安装路径\Lib\site-packages\pyqt5-tools”下。 若要启动Qt Designer可以直接到上述目录下,双击designer.exe打开Qt Designer;或将上述路径加入环境变量,在命令行输入designer打开;或在PyCharm中将其配置为外部工具打开。 下面以PyCharm为例,讲述PyCharm中Qt Designer的配置方法。

04

基础窗口控件QWidget简介

本来这一篇是想写一下怎么使用Qt Designer去设计一个界面的,但是我现在通常都是用代码去直接写界面很少用设计器。因为Qt Designer并不是为了python而写的,所以用起来不是很方便。很多初学者可能都比较喜欢使用Qt Designer,因为所见即所得,我以前做MFC开发的时候也是一直用界面设计器,主要是VS的功能非常强大,而且界面设计和代码编写都是使用这个IDE,契合非常完美。但是Qt Designer就一样了。另外一点就是因为你对PyQt5的布局管理器的使用不熟悉,如果你学会了布局管理器的使用,那这些控件的布局其实非常简单。他并不是你所想象的用代码去按像素调整窗口,PyQt5的布局管理器是根据左右布局、上下布局或者栅格布局自动帮你调整到对应的位置,你只需要进行一些微调就可以了。我们在网上搜到的很多代码都是直接去设置控件的绝对位置,这样就误导了很多人。PyQt5的布局管理器是非常好用的,它可以帮我们把大概的布局很简单的就设计好。所以后期我的教程会尽量使用布局管理器。同时在使用的地方也会加上一些注释,这样大家代码看得多了以后就会对布局管理器有一些了解。所以这一篇呢,我们就从控件开始吧,后期如果有时间的话,我再把Qt Designer简单使用写一篇文章。

04

python 仿WINDOW任务计划程序

from PyQt5 import QtCore, QtGui, QtWidgets import sys,os import win32api import win32con from PyQt5.QtWidgets import QApplication , QMainWindow,QMessageBox from PyQt5.QtCore import QDate, QDateTime, QTime,QStringListModel from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QDialog, QAction, QSystemTrayIcon, QMenu import datetime from apscheduler.schedulers.blocking import BlockingScheduler from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.cron import CronTrigger from apscheduler.triggers.interval import IntervalTrigger from apscheduler.triggers.date import DateTrigger from apscheduler.triggers.base import BaseTrigger from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor from PyQt5.QtWidgets import QSystemTrayIcon

03
领券