pyqt5入门教程(七)

设置居中函数,设置好这个居中函数,在初始化整个控件的时候,调用这个函数,就可以使得整体的框架的位置在一开始就被设置好

    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

对于这个函数进行分析,qr是整个框架的类(通过使用方法可以看出是用的是返回整个类的对应元素的引用)

  • cp是一个关键的QPoint,其实就是整个可用屏幕的正中心这个点的Point(坐标)。
  • 可以通过将函数改成下面的函数,来进行判断
def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        self.move(cp)

可以发现那个框架的左上角在整个屏幕的中心点, 由于我们之前关于move函数的理解,可以推出上面结论

总之,根据前面的代码得到的新的代码为下面代码

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QToolTip, QPushButton, QMessageBox, QDesktopWidget
from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtCore import QCoreApplication


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.setUI()

    def setUI(self):
        QToolTip.setFont(QFont('SansSerif', 10))
        self.resize(500, 150)
        self.move(100, 100)
        self.setWindowIcon(QIcon('./Title.ico'))
        self.setWindowTitle("Hello world")

        self.setToolTip("<b>this is widget</b>")

        btn = QPushButton("quit Button", self)  # self类似于C++ this指针
        btn.setToolTip("This is a button will quit itself")
        btn.clicked.connect(QCoreApplication.instance().quit)
        btn.resize(btn.sizeHint())
        btn.move(0, 0)

        self.center()
        self.show()

    def closeEvent(self, event):

        reply = QMessageBox.question(self, 'Message',
                                     "Are you sure to quit?", QMessageBox.Yes |
                                     QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())


if __name__ == '__main__':
    app = QApplication(sys.argv)

    ex = Example()

    sys.exit(app.exec_())

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,138评论 25 709
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,744评论 1 180
  • 第五章:舞会风波 雪打电话给经纪人说:姐,你把上次我说的那三套晩礼服2017夏季新款的拿过来,我3分钟内要用! 三...
    林樱星阅读 195评论 0 3
  • 又是一个人清晨,窗外飘落了潮湿的尘,生命又开始了... 生命只是一场幻觉,我始终都是行走在自我泅渡的过程之中......
    呆子哥哥阅读 273评论 1 0
  • 三毛的《撒哈拉的故事》这部作品想必很多人都有耳闻,也想必有很多人都曾读过。三毛的作品往往都是浸透着满满的率性和...
    花和少年呀阅读 686评论 1 17