pyQt5 是一个集成度非常高的 python 工具包, 几句代码就可以生成一个小窗口

例:

import sys

from PyQt5 import QtWidgets, QtCore

app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
widget.resize(400, 100)
widget.setWindowTitle("This is a demo for PyQt Widget.")
widget.show()

exit(app.exec_())

   每一pyqt5应用程序必须创建一个应用程序对象。sys.argv参数是一个列表,从命令行输入参数。


app = QtWidgets.QApplication(sys.argv)
 
QWidget部件是pyqt5所有用户界面对象的基类。他为QWidget提供默认构造函数。默认构造函数没有父类。
 
widget = QtWidgets.QWidget()
 
resize()方法调整窗口的大小。这离是400px宽100px高
 
widget.resize(400, 100)
 
move()方法移动窗口在屏幕上的位置到x = 300,y = 300坐标。
widget.move(300, 300)
设置窗口的标题
 
widget.setWindowTitle("This is a demo for PyQt Widget.")


pyqt5 listwidget获取items pyqt5 addwidget_python

上例我们使用的是python 的脚本 实现,下面我们使用 python OOP 面向对象写一个提示语的例程。

import sys
from PyQt5.QtWidgets import (QWidget, QToolTip, 
    QPushButton, QApplication)
from PyQt5.QtGui import QFont    
 
 
class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):
        #这种静态的方法设置一个用于显示工具提示的字体。我们使用10px滑体字体。
        QToolTip.setFont(QFont('SansSerif', 10))
        
        #创建一个提示,我们称之为settooltip()方法。我们可以使用丰富的文本格式
        self.setToolTip('This is a <b>QWidget</b> widget')
        
        #创建一个PushButton并为他设置一个tooltip
        btn = QPushButton('Button', self)
        btn.setToolTip('This is a <b>QPushButton</b> widget')
        
        #btn.sizeHint()显示默认尺寸
        btn.resize(btn.sizeHint())
        
        #移动窗口的位置
        btn.move(50, 50)       
        
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Tooltips')    
        self.show()
        
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

运行结果:

pyqt5 listwidget获取items pyqt5 addwidget_关闭窗口_02

当我们需要把这个按钮功能修改为关闭窗口功能时 需要添加一下代码。

qbtn = QPushButton('Quit', self)
        qbtn.clicked.connect(QCoreApplication.instance().quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(50, 50)

可以看到 按钮 点击事件连接的是 app 的 quit 功能。

pyqt5 listwidget获取items pyqt5 addwidget_关闭窗口_03

点击quit 按钮 程序就直接退出了。

通常情况下 我们关闭窗口后窗口就直接关闭了,但有很多时候 在关闭窗口之前要对程序和数据做一些最后的处理的时候。我们可以对关闭窗口的时候,触发了QCloseEvent 进行重写。

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

这里在关闭时显示一个消息框,使用消息框需要引入消息框类


from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QMessageBox


我们处理返回值,如果单击Yes按钮,关闭小部件并终止应用程序。否则我们忽略关闭事件。

qbtn.clicked.connect(QCoreApplication.instance().quit) 这句 修改为
 
qbtn.clicked.connect(self.closeEvent)


效果图:

pyqt5 listwidget获取items pyqt5 addwidget_消息框_04

下面的脚本显示了如何在屏幕中心显示窗口

#控制窗口显示在屏幕中心的方法    
    def center(self):
        
        #获得窗口
        qr = self.frameGeometry()
        #获得屏幕中心点
        cp = QDesktopWidget().availableGeometry().center()
        #显示到屏幕中心
        qr.moveCenter(cp)
        self.move(qr.topLeft())

 

完整代码:

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QMessageBox, QDesktopWidget
from PyQt5.QtCore import QCoreApplication


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        #qbtn = QPushButton('Quit', self)
        #qbtn.clicked.connect(self.closeEvent)
        #qbtn.resize(qbtn.sizeHint())
        #qbtn.move(70, 70)

        self.center()
        self.setWindowTitle('Qt Demo1')
        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_())