PyQt——窗口居中

# -*- coding: utf-8 -*-

import sys
from PyQt5 import QtWidgets
from PyQt5.QtGui import QFont #QtWidgets不包含QFont必須調用QtGui

class MessageBox(QtWidgets.QWidget):#繼承自父類QtWidgets.QWidget
    def __init__(self,parent = None):#parent = None代表此QWidget屬於最上層的窗口,也就是MainWindows.
        QtWidgets.QWidget.__init__(self)#因爲繼承關係,要對父類初始化
#通過super初始化父類,__init__()函數無self,若直接QtWidgets.QWidget.__init__(self),括號裏是有self的
        #self.setGeometry(300, 300, 1000,1000)  # setGeometry()方法完成兩個功能--設置窗口在屏幕上的位置和設置窗口本身的大小。它的前兩個參數是窗口在屏幕上的x和y座標。後兩個參數是窗口本身的寬和高
        self.resize(1000, 500)  # 設置窗體大小,本行可有可無。
        self.center()#自定義一個居中的函數
        self.setWindowTitle(u'彈窗居中窗口')  # 僅僅設置窗體標題,不設置位置。
        self.setToolTip(u'<b>程序</b>提示')#調用setToolTip()方法,該方法接受富文本格式的參數,css之類。
        QtWidgets.QToolTip.setFont(QFont('華文楷體', 10))#設置字體以及字體大小
#當我們關閉一個窗口時,在PyQt中就會觸發一個QCloseEvent的事件,正常情況下會直接關閉這個窗口,
#但是我們不希望這樣的事情發生,所以我們需要重新定義QCloseEvent,函數名稱爲closeEvent不可變
    def closeEvent(self,event):#函數名固定不可變
        reply=QtWidgets.QMessageBox.question(self,u'警告',u'確認退出?',QtWidgets.QMessageBox.Yes,QtWidgets.QMessageBox.No)
        #QtWidgets.QMessageBox.question(self,u'彈窗名',u'彈窗內容',選項1,選項2)
        if reply==QtWidgets.QMessageBox.Yes:
            event.accept()#關閉窗口
        else:
            event.ignore()#忽視點擊X事件
    def center(self):
        screen=QtWidgets.QDesktopWidget().screenGeometry()#獲取屏幕分辨率
#QtWidgets.QDesktopWidget().screenGeometry()中QDesktopWidget()也有括號
        size=self.geometry()#獲取窗口尺寸
        self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)#利用move函數窗口居中
app=QtWidgets.QApplication(sys.argv)
window=MessageBox()
window.show()
sys.exit(app.exec_())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章