• PyQt5:窗口的基本功能


    1、设置窗口图标

      设置窗口图标需要使用QApplication类下的setWindowIcon方法,会在窗口的左上角显示图标。setWindowIcon方法需要传入一个图像文件路径,文件格式可以使用png、jpg等。建议使用png格式,因为png格式支持透明背景。setWindowIcon方法还需要调用QIcon类。代码如下:

    app = QApplication(sys.argv)
    ...
    w.setWindowTitle('串口调试程序')
    app.setWindowIcon(QIcon('computerIcon.png'))
    ...

    2、显示提示框

      提示框就是一个无法获得焦点的窗口。通常用提示框作为实时帮助或提示使用。例如,当鼠标放在一个按钮上,就会显示这个按钮的作用和使用方法。提示框需要使用QWidget类的setToolTip方法创建。任何可视化控件类都有这个方法,因为可视化控件类是从QWidget类派生的。用法如下:

    from PyQt5.QtWidgets import QApplication, QWidget,QToolTip
    from PyQt5.QtGui import QIcon,QFont
    ...
    QToolTip.setFont(QFont('Arial',12))
    w.setToolTip('测试提示框')
    ...

     3、关闭窗口

      关闭窗口可以直接使用系统内置的quit方法,如果单击按钮关闭窗口,可以直接将按钮的单击事件与quit绑定。下面例子是在窗口上添加一个按钮,单击该按钮关闭窗口,同时会退出整个应用程序。

    import sys
    import PyQt5.QtWidgets as PQW
    import PyQt5.QtCore as PQC
    
    if __name__ == '__main__':
        app = PQW.QApplication(sys.argv)
        w = PQW.QWidget()
        w.setGeometry(300,300,300,220)
        w.setWindowTitle('关闭窗口')
        qbtn = PQW.QPushButton('Quit',w)
      # 将按钮的单击事件与quit绑定。 qbtn.clicked.connect(PQC.QCoreApplication.instance().quit) qbtn.resize(qbtn.sizeHint()) qbtn.move(
    50,50) w.show() sys.exit(app.exec_())

    4、消息盒子

      消息盒子(MessageBox)其实就是各种类型的消息对话框,如信息对话框,警告对话框,询问对话框等等。这些对话框的主要区别主要是对话框的图标以及按钮个数。QMessageBox类提供了若干个静态方法可以显示各种类型的对话框,如information方法用于显示信息对话框,waring方法用于显示告警对话框,question方法用于显示询问对话框。这些方法的使用都是类似的。参考下列:

    import sys
    import PyQt5.QtWidgets as PQW
    import PyQt5.QtCore as PQC
    
    class MessageBox(PQW.QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            self.setGeometry(100,100,500,500)
            self.setWindowTitle('消息盒子')
            self.show()
    
        # 关闭窗口事件
        def closeEvent(self,event):
            # 显示询问对话框
            reply = PQW.QMessageBox.question(self,'消息',"你真的要退出吗?",
                                             PQW.QMessageBox.Yes | PQW.QMessageBox.No,
                                             PQW.QMessageBox.No)
            if reply==PQW.QMessageBox.Yes:
                #调用event的accept方法才会真正关闭窗口
                event.accept()
            else:
                # 调用event的ignore方法取消窗口的关闭动作
                event.ignore()
    
    if __name__ == '__main__':
        app = PQW.QApplication(sys.argv)
        ex = MessageBox()
        sys.exit(app.exec_())

    运行显示效果:

      本例中,采用了面向对象的方式将与窗口相关的代码都封装在了自定义的MessageBox类中,这是编写PyQt5程序的常用方式。

      closeEvent方法是窗口的关闭事件方法,当窗口关闭时,会首先调用该方法。这个方法的调用是自动的,不需要干预,也不需要注册该方法。方法名字必须叫closeEvent。

      closeEvent方法的第二个参数是与关闭事件有关的对象。其中,accept方法会让窗口关闭,ignore方法会取消窗口关闭动作。如果这两个方法都不调用,那么窗口仍然会关闭。

     5、窗口居中

       窗口对象(QWidget)并没有直接提供让窗口居中的方法,不过可以曲线救国。根据窗口的宽度,高度,以及屏幕的宽度和高度,计算出窗口左上角的坐标,然后使用窗口对象的move()方法将窗口移动到中心的位置。计算方法如下:

      代码实现:

    import sys
    import PyQt5.QtWidgets as PQW
    
    class CenterWindow(PQW.QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            self.resize(250,250)
            self.center()
            self.setWindowTitle('窗口居中')
            self.show()
    
        def center(self):
            desktop = app.desktop()
            self.move((desktop.width() - self.width())/2, (desktop.height() - self.height())/2)
    
    if __name__ == '__main__':
        app = PQW.QApplication(sys.argv)
        ex = CenterWindow()
        sys.exit(app.exec_())
  • 相关阅读:
    Apache 安装后Error 403的故障排错方法(linux)
    ab接口压力测试工具使用
    php工具、拓展下载地址
    Jboss反序列化漏洞复现(CVE-2017-12149)
    Apache SSI 远程命令执行漏洞复现
    apache httpd多后缀解析漏洞复现
    IIS短文件名漏洞复现
    nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现
    nginx CRLF(换行回车)注入漏洞复现
    nginx目录穿越漏洞复现
  • 原文地址:https://www.cnblogs.com/chenhaiming/p/9926047.html
Copyright © 2020-2023  润新知