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_())

 

posted on 2018-11-07 22:01  老π  阅读(2122)  评论(0编辑  收藏  举报