PYQT5(11)-基本窗口控件-对话框类空间

QDialog

子类:QMessageBox、QColorDialog、QFileDialog、QFontDialog、QInputDialog

常用方法

setWindowTitle()设置对话框标题
setWindowModality()

设置窗口模态。取值如下:

Qt.NonModal,非模态,可以和程序的其他窗口交互
Qt.WindowModal,窗口模态,程序在未处理完当前对话框时,将阻止和对话框
的父窗口进行交互
Qt.ApplicationModal,应用程序模态,阻止和任何其他窗口进行交互

代码示例

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


class DialogDemo(QMainWindow):

    def __init__(self, parent=None):
        super(DialogDemo, self).__init__(parent)
        self.setWindowTitle("Dialog 例子")
        self.resize(350, 300)

        self.btn = QPushButton(self)
        self.btn.setText("弹出对话框")
        self.btn.move(50, 50)
        self.btn.clicked.connect(self.showdialog)

    def showdialog(self):
        dialog = QDialog()
        btn = QPushButton("ok", dialog)
        btn.move(50, 50)
        dialog.setWindowTitle("Dialog")
        dialog.setWindowModality(Qt.ApplicationModal)
        dialog.exec_()


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

 QMessageBox

QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈。每个标准按钮都有一个预定义的文本、角色和十六进制数。

QMessageBox类提供了许多常用的弹出式对话框,如提示、警告、错误、询问、关于等对话框。这些不同类型的QMessageBox对话框只是显示时的图标不同,其他功能是一样的。

常用方法

information(QWidget parent,title, text, buttons,defaultButton) 

弹出消息对话框,各参数解释如下:

parent,指定的父窗口控件
title,对话框标题
text,对话框文本
buttons:多个标准按钮,默认为OK按钮
defaultButton:默认选中的标准按钮,默认是第一个标准按钮

question(QWidget parent,title,text,buttons,defaultButton)弹出问答对话框(各参数解释同上)
warning(QWidget parent,title,text,buttons,defaultButton)弹出警告对话框(各参数解释同上)
ctitical(QWidget parent,title,text,buttons,defaultButton)弹出严重错误对话框(各参数解释同上)
about(QWidget parent,title,text)弹出关于对话框(各参数解释同上)
setTitle()设置标题
setText()设置消息正文
setlcon()设置弹出对话框的图片

标准按钮类型

QMessage.Ok同意操作
QMessage.Cancel取消操作
QMessage.Yes同意操作
QMessage.No取清操作
QMessage.Abort终止操作
QMessage.Retry重试操作
QMessage.Ignore忽略操作

5种常用的消息对话框及其显示效果

消息对话框,用来告诉用户关于提示消息

QMessageBox.information(self,"标题","消息对话框正文",

QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)

提问对话框,用来告诉用户关于提问消息
QMessageBox.question(self,"标题",”提问框消息正文",
QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
警告对话框,用来告诉用户关于不寻常的错误消息
QMessageBox.warning(self,"标题”,“警告框消息正文",
QMessageBox.Yes I QMessageBox.No, QMessageBox.Yes)
严重错误对话框,用来告诉用户关于严重的错误消息
QMessageBox.critical(self,"标题",“严重错误对话框消息正文",
QMessageBox.Yes| QMessageBox.No,QMessageBox.Yes)
关于对话框
QMessageBox.about(self,"标题","关于对话框”)

 代码示例

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)

        layout = QVBoxLayout()

        self.myButton01 = QPushButton(self)
        self.myButton01.setText("点击弹出消息对话框")
        self.myButton01.clicked.connect(self.msg_information)

        self.myButton02 = QPushButton(self)
        self.myButton02.setText("点击弹出提问对话框")
        self.myButton02.clicked.connect(self.msg_question)

        self.myButton03 = QPushButton(self)
        self.myButton03.setText("点击弹出警告对话框")
        self.myButton03.clicked.connect(self.msg_warning)

        self.myButton04 = QPushButton(self)
        self.myButton04.setText("点击弹出严重错误对话框")
        self.myButton04.clicked.connect(self.msg_critical)

        self.myButton05 = QPushButton(self)
        self.myButton05.setText("点击弹出关于对话框")
        self.myButton05.clicked.connect(self.msg_about)

        layout.addWidget(self.myButton01)
        layout.addWidget(self.myButton02)
        layout.addWidget(self.myButton03)
        layout.addWidget(self.myButton04)
        layout.addWidget(self.myButton05)

        self.setLayout(layout)

    def msg_information(self):
        # 使用infomation信息框
        reply = QMessageBox.information(self, "标题", "消息对话框正文", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
        print(reply)

    def msg_question(self):
        # 使用question信息框
        reply = QMessageBox.question(self, "标题", "提问框消息正文", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
        print(reply)

    def msg_warning(self):
        # 使用warning信息框
        reply = QMessageBox.warning(self, "标题", "警告框消息正文", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
        print(reply)

    def msg_critical(self):
        # 使用warning信息框
        reply = QMessageBox.critical(self, "标题", "严重错误对话框消息正文", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
        print(reply)

    def msg_about(self):
        # 使用about信息框
        reply = QMessageBox.about(self, "标题", "关于对话框")
        print(reply)


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

 

 QInputDialog

QInputDialog控件是一个标准对话框,由一个文本框和两个按钮(OK按钮和Cancel按钮)组成。

当用户单击OK按钮或按Enter键后,在父窗口可以收集通过QInputDialog控件输入的信息。在QInputDialog控件中可以输入数字、字符串或列表中的选项。标签用于提示必要的信息。

常用方法

getlnt()从控件中获得标准整数输入
getDouble()从控件中获得标准浮点数输入
getText()从控件中获得标准字符串输入
getltem()从控件中获得列表里的选项输入

代码示例

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


class InputdialogDemo(QWidget):
    def __init__(self, parent=None):
        super(InputdialogDemo, self).__init__(parent)
        layout = QFormLayout()
        self.btn1 = QPushButton("获得列表里的选项")
        self.btn1.clicked.connect(self.getItem)
        self.le1 = QLineEdit()
        layout.addRow(self.btn1, self.le1)

        self.btn2 = QPushButton("获得字符串")
        self.btn2.clicked.connect(self.getIext)
        self.le2 = QLineEdit()
        layout.addRow(self.btn2, self.le2)

        self.btn3 = QPushButton("获得整数")
        self.btn3.clicked.connect(self.getInt)
        self.le3 = QLineEdit()
        layout.addRow(self.btn3, self.le3)
        self.setLayout(layout)
        self.setWindowTitle("Input Dialog 例子")

    def getItem(self):
        items = ("C", "C++", "Java", "Python")
        item, ok = QInputDialog.getItem(self, "select input dialog",
                                        "语言列表", items, 0, False)
        if ok and item:
            self.le1.setText(item)

    def getIext(self):
        text, ok = QInputDialog.getText(self, 'Text Input Dialog', '输入姓名:')
        if ok:
            self.le2.setText(str(text))

    def getInt(self):
        num, ok = QInputDialog.getInt(self, "integer input dualog", "输入数字")
        if ok:
            self.le3.setText(str(num))


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

 QFontDialog

QFontDialog控件是一个常用的字体选择对话框,可以让用户选择所显示文本的字号大小、样式和格式。使用QFontDialog类的静态方法getFont(),可以从字体选择对话框中选择文本的显示字号大小、样式和格式。

 代码示例

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


class FontDialogDemo(QWidget):
    def __init__(self, parent=None):
        super(FontDialogDemo, self).__init__(parent)
        layout = QVBoxLayout()
        self.fontButton = QPushButton("choose font")
        self.fontButton.clicked.connect(self.getFont)
        layout.addWidget(self.fontButton)
        self.fontLineEdit = QLabel("Hello,测试字体例子")
        layout.addWidget(self.fontLineEdit)
        self.setLayout(layout)
        self.setWindowTitle("Font Dialog 例子")

    def getFont(self):
        font, ok = QFontDialog.getFont()
        if ok:
            self.fontLineEdit.setFont(font)


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

 QFileDialog

是用于打开和保存文件的标准对话框。

常用方法

getOpenFileName()返回用户所选择文件的名称,并打开该文件
getSaveFileName()使用用户选择的文件名并保存文件
setFileMode()可以选择的文件类型,枚举常量是:
QFileDialog.Anyfile,任何文件
QFileDialog.ExistingFile,已存在的文件
QFileDialog.Directory,文件目录
QFileDialog.ExistingFiles,已经存在的多个文件
setFilter()设置过滤器,只显示过滤器允许的文件类型

代码示例

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


class filedialogdemo(QWidget):
    def __init__(self, parent=None):
        super(filedialogdemo, self).__init__(parent)
        layout = QVBoxLayout()
        self.btn = QPushButton("加载图片")
        self.btn.clicked.connect(self.getfile)
        layout.addWidget(self.btn)
        self.le = QLabel("")
        layout.addWidget(self.le)
        self.btn1 = QPushButton("加载文本文件")
        self.btn1.clicked.connect(self.getfiles)
        layout.addWidget(self.btn1)
        self.contents = QTextEdit()
        layout.addWidget(self.contents)
        self.setLayout(layout)
        self.setWindowTitle("File Dialog 例子")

    def getfile(self):
        fname, _ = QFileDialog.getOpenFileName(self, 'Open file', 'c:\\', "Image files (*.jpg *.gif)")
        self.le.setPixmap(QPixmap(fname))

    def getfiles(self):
        dlg = QFileDialog()
        dlg.setFileMode(QFileDialog.AnyFile)
        dlg.setFilter(QDir.Files)

        if dlg.exec_():
            filenames = dlg.selectedFiles()
            f = open(filenames[0], 'r')

            with f:
                data = f.read()
                self.contents.setText(data)


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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AdolphW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值