【python】PyQt5 学习 _2

基础篇 2

生成 MessageBox 窗口。可自行设置 title text ,并有 【退出】按键,也可以设定窗口存在时长。
# coding:utf-8
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QLabel, QPushButton, QVBoxLayout, QHBoxLayout, QWidget, QGridLayout, QLineEdit
from PyQt5.QtCore import Qt, QCoreApplication, QTimer


class GUI(QWidget):
    def iniUI(self, width=400, height=300, title="this is title", text="this is text"):
        self.setWindowTitle(title)
        self.resize(width, height)
        self.rpa_layout(text)

    # 布局
    def rpa_layout(self, text):
        wwg = QWidget(self)

        wlayout =  QVBoxLayout(wwg)  # 垂直布局
        hlayout1 = QHBoxLayout() # 水平布局
        hlayout2 = QHBoxLayout() # 水平布局

        # 标签
        label = QLabel()
        label.setText(text)   # label里 写入 text

        # 按钮
        button = QPushButton('取消')
        button.clicked.connect(QCoreApplication.quit)

        hlayout1.addWidget(label)   # 第一个 layout

        hlayout2.addStretch()  # 拉伸操作
        hlayout2.addWidget(button)  # 第二个 layout

        wlayout.addLayout(hlayout1)
        wlayout.addLayout(hlayout2)

        self.setLayout(wlayout)  # 设置窗体布局


def msg_box(width=300, height=150, title="title", text="text", timeout=5):
    '''
        消息框
    :param width:   宽度  默认400
    :param height:  高度  默认300
    :param title:   窗口标题 默认 "title"
    :param text:    框内文本 默认 "text"
    :param timeout: 超时  默认5秒
    '''
    try:
        app = QApplication(sys.argv)
        gui = GUI()

        gui.iniUI(width, height, title, text)
        gui.show()

        time_colock = QTimer()
        time_colock.singleShot(timeout*1000, app.quit)  # 秒 -> 毫秒

        sys.exit(app.exec_())

    except Exception as e:
        raise e


if __name__ == '__main__':
    msg_box()

在看完第一篇 pyqt5 学习帖后, 本帖加入了 按键 和 布局,但都是很简单的代码,可以看下 ~~~

当然也可以直接用 pyqt5 封装好的函数:

# -*- coding:utf-8 -*-
#  https://www.riverbankcomputing.com/static/Docs/PyQt5/genindex.html
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class MyWindow(QWidget):
    def msg(self):
        reply = QMessageBox.about(self, "标题", "关于对话框消息正文")#弹出消息对话框

if __name__ == '__main__':
    app=QApplication(sys.argv)
    myshow=MyWindow().msg()
    app.quit()

简单粗暴,但 适应性 小。