PyQt基础_011_对话框类控件QMessage

基本功能

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class WinForm( QWidget): 
    def __init__(self): 
        super(WinForm,self).__init__() 
        self.setWindowTitle("QMessageBox") 
        self.resize(300, 100) 
        self.myButton = QPushButton(self) 
        self.myButton.setText("点击弹出消息框") 
        self.myButton.clicked.connect(self.msg) 

    def msg(self): 
        # 使用infomation信息框  
        reply = QMessageBox.information(self, "title", "hello world", QMessageBox.Yes | QMessageBox.No , QMessageBox.Yes ) 
        print( reply )

if __name__ == '__main__':
    app= QApplication(sys.argv) 
    demo = WinForm() 
    demo.show() 
    sys.exit(app.exec_())

增加图标显示

import sys

from PyQt5.Qt import *

"""
QMessageBox.Icon
QMessageBox.NoIcon
QMessageBox.Question
QMessageBox.Information
QMessageBox.Warning
QMessageBox.Critical
"""

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QMessageBox")
        self.resize(500, 500)
        self.move(400, 250)
        self.setup_ui()

    def setup_ui(self):
        mb = QMessageBox(self)
        # mb = QMessageBox(QMessageBox.Critical, '窗口标题', '主标题', QMessageBox.Ok | QMessageBox.Discard, self)
        # mb.setModal(False)  # 强行设置为非模态
        # mb.setWindowModality(Qt.NonModal)  # 强行设置为非模态
         # mb.show()  # 一定为模态,即使使用show()方法也仍为模态

        mb.setWindowTitle("message")

        # 设置图标
        # mb.setIcon(QMessageBox.Information)  # 设置标准图标
        mb.setIconPixmap(QPixmap("./resource/python_96px.ico").scaled(40, 40)) # 设置自定义图标

        # 设置主标题
        mb.setText("<h3>hello world</h3>") # 设置主标题
        # mb.setTextFormat(Qt.PlainText)  # 设置主标题文本格式
        # mb.setTextFormat(Qt.RichText)
        mb.setTextFormat(Qt.AutoText)

        # 设置提示文本(副标题)
        mb.setInformativeText("tips") # 设置副标题
        # print(mb.informativeText())

        # 设置详细文本
        mb.setDetailedText("this is a message") # 设置详情(不支持富文本)
        # print(mb.detailedText())

        # 设置复选框
        mb.setCheckBox(QCheckBox("下次不再提醒", mb)) # 设置复选框
        mb.checkBox().toggled.connect(lambda: print("clicked"))

        mb.open()

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

    window = Window()
    window.show()

    sys.exit(app.exec_())

按钮事件

import sys

from PyQt5.Qt import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QMessageBox-按钮操作")
        self.resize(500, 500)
        self.move(400, 250)
        self.setup_ui()

    def setup_ui(self):
        mb = QMessageBox(self)
        mb.setWindowTitle("message")

        # 添加移除按钮
        # mb.addButton(QPushButton("Yes!Yes!Yes!", mb), QMessageBox.YesRole)
        yes_btn = mb.addButton("Yes", QMessageBox.YesRole)
        # mb.removeButton(yes_btn)  # 移除按钮

        # 设置标准按钮
        mb.setStandardButtons(QMessageBox.Apply | QMessageBox.No)

        # 默认按钮(默认哪个按钮获取到焦点)
        mb.setDefaultButton(QMessageBox.Apply)

        # 退出按钮(按下键盘Esc键时激活的按钮)
        mb.setEscapeButton(QMessageBox.No)

        # 按钮信号槽
        apply_btn = mb.button(QMessageBox.Apply) # 获取按钮对象

        def test(btn):
            if btn == yes_btn:
                print("yes clicked")
            elif btn == apply_btn:
                print("apply clicked")

            role = mb.buttonRole(btn)
            if role == QMessageBox.YesRole:
                 print("yes clicked")
            elif role == QMessageBox.NoRole:
                print("no clicked")

        mb.buttonClicked.connect(test)

        mb.open()

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

    window = Window()
    window.show()

    sys.exit(app.exec_())

相关推荐

  1. PyQt5基础解析:QCalendar在Python中的应用

    2023-12-07 19:44:02       57 阅读
  2. Qt常用基础总结—菜单(QMenu)

    2023-12-07 19:44:02       29 阅读
  3. Qt常用基础总结—表格(QTableWidget)

    2023-12-07 19:44:02       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 19:44:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 19:44:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 19:44:02       82 阅读
  4. Python语言-面向对象

    2023-12-07 19:44:02       91 阅读

热门阅读

  1. Pod 存活探针 livenessProbe

    2023-12-07 19:44:02       58 阅读
  2. sklearn 笔记:neighbors.NearestNeighbors 自定义metric

    2023-12-07 19:44:02       56 阅读
  3. 当内核有内存泄漏的时候

    2023-12-07 19:44:02       44 阅读
  4. 【Spark基础】-- 宽窄依赖

    2023-12-07 19:44:02       49 阅读
  5. 拥有一台服务器可以做些什么

    2023-12-07 19:44:02       65 阅读
  6. Spark SQL百万级数据批量读写入MySQL

    2023-12-07 19:44:02       62 阅读
  7. 什么问题适合使用卡方检验?

    2023-12-07 19:44:02       44 阅读
  8. qt 链表QList,QLinkedList的常见使用

    2023-12-07 19:44:02       59 阅读
  9. 英伟达显卡系列与架构、代表产品

    2023-12-07 19:44:02       60 阅读
  10. Ubuntu 配置打开文件限制

    2023-12-07 19:44:02       64 阅读
  11. Python批量图像处理--图片重命名、图片旋转

    2023-12-07 19:44:02       64 阅读
  12. CG 函数

    2023-12-07 19:44:02       56 阅读
  13. 解决分布式React前端在本地开发环境的跨域问题

    2023-12-07 19:44:02       60 阅读
  14. 关于业界大语言模型(LLM)开源的一些看法

    2023-12-07 19:44:02       51 阅读