美文网首页
PyQt5编程(9):窗口在屏幕的位置与管理

PyQt5编程(9):窗口在屏幕的位置与管理

作者: 用电热毯烤猪 | 来源:发表于2018-01-01 20:47 被阅读0次

    设置窗口在屏幕的位置可使用以下函数:
    move(int x,int y)
    move(QPoint p)
    窗口的位置是相对于父窗口的,已包括标题栏的高度和边框的宽度。
    setGeometry(int x,int y,int w,int h)
    setGeometry(QRect r)
    setGeometry()可同时设置窗口的位置和尺寸,与move()不同,x,y的值不包括题栏的高度和边框的宽度。所以,如果执行setGeometry(0,0,500,200),窗口的标题栏和边框在屏幕之外,而无法显示在屏幕上。
    注意:
    原点位置左上角。x 轴向右,y轴向下。
    获取窗口位置的函数有:
    x():获取窗口的x轴位置;
    y():获取窗口的y轴位置;
    pos():返回包含x,y轴位置的QPoint实例;
    geometry():返回包含x,y轴位置以及窗口宽、高的QRect实例;这些值不包括标题栏的高度和边框的宽度。
    frameGeometry():返回的参数与geometry()相同,但包括标题栏的高度和边框的宽度且要在显示之后调用才有效。
    例如:

    window.resize(300, 100)
    
    window.move(10, 10)
    
    rect = window.geometry()
    
    print(rect.left(), rect.top())            # 14 40
    
    print(rect.width(), rect.height())        # 300 100
    
    rect = window.frameGeometry()
    
    print(rect.left(), rect.top())            # 10 10
    
    print(rect.width(), rect.height())        # 308 134
    

    要让窗口显示在屏幕中央,就需要知道屏幕的尺寸。可调用静态函数QApplication.desktop()来获取代表桌面的QDesktopWidget 对象。
    再通过调用QDesktopWidget类的函数得到相应值:
    width():屏幕宽度的像素值;
    height()::屏幕高度的像素值;
    screenGeomtry():返回整个屏幕的位置和尺寸的QRect对象;
    availableGeomtry():返回屏幕可用区域的位置和尺寸的QRect对象,即扣除任务栏的区域。

    例1:

    # -*- coding: utf-8 -*-
    from PyQt5 import QtWidgets
    import sys
    
    app = QtWidgets.QApplication(sys.argv)
    window = QtWidgets.QWidget()
    window.setWindowTitle("在屏幕中央显示窗口")
    window.resize(300, 100)
    desktop = QtWidgets.QApplication.desktop()
    x = (desktop.width() - window.width()) // 2
    y = (desktop.height() - window.height()) // 2
    window.move(x, y)
    window.show()
    sys.exit(app.exec_())
    

    例2:

    # -*- coding: utf-8 -*-
    from PyQt5 import QtWidgets
    import sys
    
    app = QtWidgets.QApplication(sys.argv)
    window = QtWidgets.QWidget()
    window.setWindowTitle("在屏幕中央显示窗口")
    window.resize(300, 100)
    window.move(window.width() * -2, 0)  #先将窗口放到屏幕外,可避免移动窗口时的闪烁现象。
    window.show()
    desktop = QtWidgets.QApplication.desktop()
    x = (desktop.width() - window.frameSize().width()) // 2
    y = (desktop.height() - window.frameSize().height()) // 2
    window.move(x, y)
    sys.exit(app.exec_())
    

    相关文章

      网友评论

          本文标题:PyQt5编程(9):窗口在屏幕的位置与管理

          本文链接:https://www.haomeiwen.com/subject/cwqxnxtx.html