PyQt5-如何设置主窗口居中?退出应用程序如何操作?
导读:1 如何实现主窗口居中显示?让主窗口居中,其实就是让窗口的左右边缘到左右屏幕距离相等,让窗口的上下边缘到上下屏幕的距离相等;主要是需要进行计算和移动工作;可以使用 QDesktopWidget 类来获取屏幕的大小和位置信息,然后根据这些信息...
    1 如何实现主窗口居中显示?
- 让主窗口居中,其实就是让窗口的左右边缘到左右屏幕距离相等,让窗口的上下边缘到上下屏幕的距离相等;
 - 主要是需要进行计算和移动工作;
 - 可以使用 
QDesktopWidget类来获取屏幕的大小和位置信息,然后根据这些信息计算出窗口的位置和大小; QDesktopWidget().screenGeometry()可以获取到屏幕坐标:
    def screenGeometry(self, *__args): # real signature unknown;
     restored from __doc__ with multiple overloads
        """
        screenGeometry(self, screen: int = -1) ->
     QRect
        screenGeometry(self, QWidget) ->
     QRect
        screenGeometry(self, QPoint) ->
     QRect
        """
        pass- 具体步骤如下:
 
1.1 获取屏幕坐标
- 首先获取到屏幕坐标系:
 
screen = QDesktopWidget().screenGeometry()1.2 获取窗口坐标
- 使用
geometry()方法获取到当前窗口的坐标: 
size = self.geometry()1.3 居中计算
- 然后进行计算,屏幕坐标减窗口坐标对应计算:
 
l = (screen.width() - size.width()) / 2
t = (screen.height() - size.height()) / 21.4 移动位置
- 最后就是移动窗口到计算好的位置即可:
 
self.move(l, t)1.5 完整代码
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/2 
# 文件名称:test021_CenterForm.py
# 作用:窗口居中
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidget
class CenterForm(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("标准窗口")
        self.resize(500, 400)
    def center(self):
        # 获得屏幕坐标
        screen = QDesktopWidget().screenGeometry()
        # 获取窗口坐标系
        size = self.geometry()
        l = (screen.width() - size.width()) / 2
        t = (screen.height() - size.height()) / 2
        self.move(l, t)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = CenterForm()
    win.show()
    sys.exit(app.exec_())1.6 效果演示
在这里插入图片描述2 如何退出应用程序?
2.1 使用按钮退出
- 我们预期是使用一个按钮来点击后退出应用程序;
 - 之前我们使用的
Qt Designer来实现的,主要是可视化操作; - 现在我们使用代码来实现看看效果;
 - 先添加一个按钮:
 
self.button = QPushButton("点击按钮")2.2 信号与槽绑定
- 把按钮的点击操作和槽进行绑定;
 - 后边会定义一个按钮点击事件;
 
self.button.clicked.connect(self.on_click)2.3 布局和增加按钮
- 把设置的按钮添加到窗口中,并设置布局等操作;
 
lay = QHBoxLayout()
lay.addWidget(self.button)
mframe = QWidget()
mframe.setLayout(lay)
self.setCentralWidget(mframe)2.4 定义一个按钮事件
- 定义一个按钮事件,即退出事件;
 
    def on_click(self):
        # 获取对象信号
        s = self.sender()
        print(s.text() + " 应用程序已经退出")
        app = QApplication.instance()
        app.quit()2.5 完整代码
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/2 
# 文件名称:test022_QuitAPP.py
# 作用:退出应用程序
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QHBoxLayout, QWidget, QPushButton
class QuitAPP(QMainWindow):
    def __init__(self):
        super(QuitAPP, self).__init__()
        # 窗口尺寸
        self.resize(500, 400)
        # 窗口标题
        self.setWindowTitle("验证应用程序的退出")
        # 设置一个按钮
        self.button = QPushButton("点击按钮")
        # 信号与槽关联
        self.button.clicked.connect(self.on_click)
        # 水平布局
        lay = QHBoxLayout()
        lay.addWidget(self.button)
        # 增加按钮
        mframe = QWidget()
        mframe.setLayout(lay)
        self.setCentralWidget(mframe)
    # 按钮事件
    def on_click(self):
        # 获取对象信号
        s = self.sender()
        print(s.text() + " 应用程序已经退出")
        app = QApplication.instance()
        app.quit()
if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = QuitAPP()
    win.show()
    sys.exit(app.exec_())2.6 效果演示
在这里插入图片描述- 点击按钮后输入以下信息:
 
D:\Python37\python.exe F:/pyqt_study/test_case/test022_QuitAPP.py
点击按钮 应用程序已经退出我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!
点击关注作者,阅读全文声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PyQt5-如何设置主窗口居中?退出应用程序如何操作?
本文地址: https://pptw.com/jishu/571336.html
