PyQt5基本窗口控件二(QWidget)

QWidget基本介绍

基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口或者控件都直接或者间接的继承自QWidget类。


窗口坐标系统

PyQt使用统一的坐标系统来定位窗口控件的位置和大小,具体如下
窗口坐标系统
以屏幕左上角为原点,也就是(0, 0)点,从左向右为x轴正方向,从上向下为y轴正方向,整个屏幕的坐标系统用来定位顶层窗口。
在窗口内部也有自己的坐标系统,该坐标系统以客户区的左上角为原点,从左向右为x轴正方向,从上到下为y轴正方向,在客户区周围有标题栏和边框。
QWidget几何机构
从上图中,可以将这些成员函数分成三类:

  1. QWidget直接提供的成员函数,x(), y()获得整个窗口左上角的坐标,width()和height()返回客户区的宽度和高度。
  2. QWidget的geometry()提供的成员函数,x(),y()返回的是客户区左上角坐标,width(),height()返回客户区宽度和高度。
  3. QWidget的frameGeometry()提供的成员函数,x(),y()返回的是整个窗口左上角的坐标,-width(),height()也是整个对话框的宽度和高度,包括标题栏和边框。

从上图可以看出来,QWidget有两种常见的几何结构
不包含外面各种边框的几何结构(客户区)。
包含各种边框的几何结构。

不包含边框常用函数

  • 改变客户区面积
    QWidget.resize(width, height)
  • 获取客户区大小
    QWidget.size()
  • 获取客户区的宽度和高度
    QWidget.width()
    QWidget.height()
  • 设置客户区的宽度和高度(在某些维度上值不可改变)
    QWidget.setFixedWidth(int width)
    QWidget.setFixedHeight(int height)
    QWidget.setFixedSize(int width, int height)
  • 设置窗口的位置(值可以改变)
    QWidget.setGeometry(int x, int y, int width, int height)

包含边框常用函数

  • 获取窗口的大小和位置
    QWidget.frameGeometry()
  • 设置窗口的位置
    QWidget.move(int x, int y)
  • 获取窗口左上角坐标
    QWidget.pos()

坐标系统测试

# _*_ coding:utf-8 _*_
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton)

class MyDialog(QWidget):
    def __init__(self):
        super(MyDialog, self).__init__()
        self.init_ui()

    def init_ui(self):
        # (50, 50)相对屏幕最左上角
        # (300, 200)客户区宽度 高度
        self.move(50, 50)
        self.resize(300, 200)
        self.setWindowTitle('测试窗口坐标系统')

        self.btn = QPushButton('测试按钮', self)
        # 相对于客户区的原点
        self.btn.move(20, 20)

        self.show()

    def show_coordinate(self):
        print("显示整个窗口的参数")
        print("QWidget.x() = %d" % self.x())
        print("QWidget.y() = %d" % self.y())
        print("QWidget.pos()" + str(self.pos()))
        print("width=%d" % self.frameGeometry().width())
        print("height=%d\n" % self.frameGeometry().height())

        print("显示工作区参数")
        print("x=%d" % self.geometry().x())
        print("y=%d" % self.geometry().y())
        print("width=%d" % self.width())
        print("height=%d" % self.height())
        print("geometry width=%d" % self.geometry().width())
        print("geometry height=%d\n" % self.geometry().height())

        print("显示按钮参数")
        print("x=%d" % self.btn.x())
        print("y=%d" % self.btn.y())

if __name__ == "__main__":

    app = QApplication(sys.argv[1:])

    win = MyDialog()
    win.show_coordinate()

    sys.exit(app.exec_())

显示整个窗口的参数 QWidget.x() = 50 QWidget.y() = 50
QWidget.pos()PyQt5.QtCore.QPoint(50, 50) width=318 height=245

显示工作区参数 x=59 y=86 width=300 height=200 geometry width=300 geometry
height=200

显示按钮参数 x=20 y=20

坐标系测试

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页