• PyQt5Day29--展示控件QDialog(对话框)


    一、QDialog简介

      QDialog包含了QErrorMessage、QProgressDialog和QMessageBox三个子类。

    二、子类QErrorMessage

    1、简单介绍

      错误消息小部件由文本标签和复选框组成;

      该复选框允许用户控制将来是否再次显示相同的错误消息。

    2、功能作用

    代码:

     1 # *******************QErrorMessage**********************开始
     2 from PyQt5.Qt import *
     3 
     4 class Window(QWidget):
     5     def __init__(self):
     6         super().__init__()
     7         self.setWindowTitle("QErrorMessage")
     8         self.resize(500, 500)
     9         self.setup_ui()
    10 
    11     def setup_ui(self):
    12         # em = QErrorMessage(self)
    13         # em.setWindowTitle("错误提示")
    14         # em.showMessage("哈哈,明天你好")
    15         # em.show()
    16 
    17         # QErrorMessage.qtHandler()
    18         # # qDebug("xxxxxx")
    19         # qWarning("12344")
    20         pass
    21 
    22 if __name__ == '__main__':
    23     import sys
    24 
    25     app=QApplication(sys.argv)
    26 
    27     window=Window()
    28     window.show()
    29 
    30     QErrorMessage.qtHandler()
    31     # qDebug("xxxxxx")
    32     qWarning("12344")
    33 
    34     sys.exit(app.exec_())
    35 # *******************QErrorMessage**********************结束

    三、子类QProgressDialog

    1、简单介绍

      提供了一个缓慢的操作进度反馈;进度对话框用于向用户指示操作将花费多长时间,并演示应用程序尚未冻结。

      它还可以为用户提供中止操作的机会。

    2、构造函数

    3、弹出

    (1)框架

    (2)操作及展示

    1 pd = QProgressDialog(self)
    2 pd.open(lambda: print("对话框被取消"))
    3 pd.setAutoClose(False)  # 取消自动关闭
    4 # pd.setValue(50)
    5 pd.setMinimumDuration(0)  # 设置等待时间为0
    6 for i in range(1, 101):
    7     pd.setValue(i)
    1 pd = QProgressDialog("xx1","xxx2",1,1000,self)

    4、界面内容设置

    (1)框架

    (2)操作及展示

    1 # 界面内容设置
    2 pd.setWindowTitle("进度对话框")
    3 # 其余的一样

    5、数据处理+是否取消+自动操作

    (1)框架

    (2)操作及展示

     1 pd.setLabelText("下载进度")
     2 pd.setCancelButtonText("取消下载")
     3 pd.setRange(0, 100)
     4 pd.setValue(95)
     5 print(pd.minimum())
     6 # pd.setAutoReset(False) # 取消自动重置
     7 
     8 timer = QTimer(pd)
     9 
    10 
    11 def test():
    12     if pd.value() + 1 >= pd.maximum() or pd.wasCanceled():
    13         timer.stop()
    14         # 自动关闭窗口有三个条件:值达到最大,自动重置,自动关闭属性为True
    15     pd.setValue(pd.value() + 1)
    16 
    17 
    18 timer.timeout.connect(test)
    19 timer.start(1000)

    四、子类QMessageBox

    1、简单介绍

      用于通知用户或请求用户的提问和接收应答一个模态对话框。

    2、展示

    (1)框架

    (2)操作及展示

    1 mb = QMessageBox(self)
    2 # mb.setModal(False) # 设置为非模态
    3 mb.setWindowModality(Qt.NonModal) # 设置为非模态
    4 mb.show()

    3、内容展示

    (1)对话框标题、图标、主要标题

     1 # 对话框标题、图标
     2 # mb = QMessageBox(QMessageBox.Warning,'xxx1','<h2>xx2</h2>',QMessageBox.Ok | QMessageBox.Discard,self)
     3 mb = QMessageBox(self)
     4 mb.setWindowTitle("消息盒子")  # 窗口标题
     5 mb.setIconPixmap(QPixmap('xxx.png').scaled(50, 50))
     6 mb.setText("<h3>文件内容已经被修改<.h3>")  # 主要标题
     7 mb.setInformativeText("是否直接关闭,不保存?")  # 提示信息
     8 mb.setCheckBox(QCheckBox("下次不再提醒", mb))  # 设置复选框
     9 mb.setDetailedText("<h4>你修改的内容是给每一行代码添加了一个分号</h4>")  # 详情文本
    10 
    11 # 主要标题
    12 # mb.setTextFormat(Qt.PlainText) # 主要标题设置为普通文本
    13 mb.setTextFormat(Qt.RichText)  # 主要标题设置为富文本

    (2)提示文本、详细文本、复选框

    在上面已经操作过,参考上面的内容。

    按钮的一些详细分类:

    按钮的补充内容如下:(两部分)

     

     1 # 标准按钮
     2 # mb.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
     3 
     4 # 添加/移除角色按钮
     5 btn = QPushButton('xxx1', mb)
     6 mb.addButton(btn, QMessageBox.YesRole)
     7 # mb.addButton(QPushButton('xxx2',mb),QMessageBox.NoRole)
     8 btn2 = mb.addButton('xxx2', QMessageBox.NoRole)  # 有返回结果
     9 # mb.removeButton(btn) # 移除按钮
    10 # mb.removeButton(btn2) # 移除按钮
    11 
    12 # 默认按钮
    13 mb.setDefaultButton(btn2)  # 默认选中xxx2按钮
    14 
    15 # 退出按钮
    16 mb.setEscapeButton(btn2)  # esc关联btn2
    17 
    18 
    19 # 信号
    20 def test(btn):
    21     if btn == btn2:
    22         print("点击了第二个按钮")
    23     else:
    24         print("点击了第一个按钮")
    25 
    26 
    27 mb.buttonClicked.connect(test)
    28 
    29 mb.show()

    4、文本交互

    1 # 文本交互
    2 mb.setTextInteractionFlags(Qt.TextEditorInteraction)  # 控制主要标题

    5、静态方法

    1 # 静态方法
    2 # QMessageBox.about(self,'xx1','xx2') # 关于对话框
    3 # QMessageBox.aboutQt(self,'xx1') # 关于qt
    4 result = QMessageBox.question(self, 'xx1', 'xx2', QMessageBox.Ok | QMessageBox.Discard, QMessageBox.Discard)
    5 print(result, 'xxx')
  • 相关阅读:
    在线制作流程图
    表格设计有感
    mvp需要加上单利模式
    2015.7.17( NOI2015 day1 )
    BZOJ 2073: [POI2004]PRZ( 状压dp )
    1688: [Usaco2005 Open]Disease Manangement 疾病管理( 枚举 )
    BZOJ 1072: [SCOI2007]排列perm( )
    BZOJ 1475: 方格取数( 网络流 )
    BZOJ 3524: [Poi2014]Couriers( 主席树 )
    BZOJ 1087: [SCOI2005]互不侵犯King( 状压dp )
  • 原文地址:https://www.cnblogs.com/fengxb1213/p/12830028.html
Copyright © 2020-2023  润新知