IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> PyQt5弹出窗口--QInputDialog QMessageBox QFileDialog -> 正文阅读

[Python知识库]PyQt5弹出窗口--QInputDialog QMessageBox QFileDialog


前言

PyQt5中弹出窗口最常用的三种:输入框、消息提示、文件夹对话框,下面详细介绍这三大类。

一、QInputDialog–弹出输入对话框

1. 输入整数

# 后面四个数字的作用依次是 初始值 最小值 最大值 步幅
value, ok = QInputDialog.getInt(self, "输入框标题", "这是提示信息\n\n请输入整数:", 37, -10000, 10000, 2)

效果:
输入整数

2. 输入小数

# 后面四个数字的作用依次是 初始值 最小值 最大值 小数点后位数
value, ok = QInputDialog.getDouble(self, "输入框标题", "这是提示信息\n\n请输入整数:", 37.56, -10000, 10000, 2)

效果:
输入小数

3. 输入文本

# 第三个参数表示显示类型,可选,有正常(QLineEdit.Normal)、密碼( QLineEdit. Password)、不显示( QLineEdit. NoEcho)三种情况
value, ok = QInputDialog.getText(self, "输入框标题", "这是提示信息\n\n请输入文本:", QLineEdit.Normal, "这是默认值")

效果:
输入文本

4. 输入多行文本

value, ok = QInputDialog.getMultiLineText(self, "输入框标题", "这是提示信息\n\n请输入地址:", "默认的\n我的地址是\n中国广东广州番禺")

效果:
输入多行文本

5. 输入选项

# 1为默认选中选项目,True/False 列表框是否可编辑。 
items = ["Spring", "Summer", "Fall", "Winter"]
value, ok = QInputDialog.getItem(self, "输入框标题", "这是提示信息\n\n请选择季节:", items, 1, True)

效果:
输入选项
输入选项

注意

输入后有两个选项,点击OK则代码中value为输入内容,ok为True;点击Cancel则value为空,ok为False。

示例

import sys
from PyQt5.QtWidgets import *


class MyWindow(QWidget):

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

        self.setWindowTitle('PyQt5 弹出窗口')
        self.resize(400, 300)
        # 加了self为全局布局,没加为局部布局
        h1 = QHBoxLayout(self)
        btn = QPushButton('弹出窗口')
        btn.clicked.connect(self.do_btn)
        h1.addWidget(btn)

    def do_btn(self, event):  # 输入:整数
        # 后面四个数字的作用依次是 初始值 最小值 最大值 步幅
        value, ok = QInputDialog.getInt(self, "输入框标题", "这是提示信息\n\n请输入整数:", 37, -10000, 10000, 2)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyWindow()
    win.show()
    sys.exit(app.exec_())

效果:
示例1
点击弹出窗口按钮则弹出输入框,更换为其它输入框,更改do_btn函数中的语句即可。

二、QMessageBox–弹出消息提示框

1. 信息

用来告诉用户关于提示信息

# 后两项分别为按钮(以|隔开,共有7种按钮类型,见示例后)、默认按钮(省略则默认为第一个按钮)
reply = QMessageBox.information(self, "消息框标题", "这是一条消息。", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)

效果:
信息
选择Yes代码中replay为16384,选择No则replay为65536,这里不知道为什么。。。下面几个也都是这样

2. 问答

用来告诉用户关于提问消息

# 后两项分别为按钮(以|隔开,共有7种按钮类型,见示例后)、默认按钮(省略则默认为第一个按钮)
reply = QMessageBox.question(self, "消息框标题", "这是一条问答吗?", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)

效果:
问答

3. 警告

用来告诉用户关于不寻常的错误消息

# 后两项分别为按钮(以|隔开,共有7种按钮类型,见示例后)、默认按钮(省略则默认为第一个按钮)
reply = QMessageBox.warning(self, "消息框标题", "这是一条警告!", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)

效果:
警告

4. 危险

用来告诉用户关于严重的错误消息

# 后两项分别为按钮(以|隔开,共有7种按钮类型,见示例后)、默认按钮(省略则默认为第一个按钮)
reply = QMessageBox.critical(self, '标题', '严重错误对话框消息正文', QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)

效果:
危险

5. 关于

# 这里不需要插入按钮类型
reply = QMessageBox.about(self, "消息框标题", "这是关于软件的说明。。。")

效果:
关于
注意:这里代码中没有选项,点击OK,replay返回None

示例

import sys
from PyQt5.QtWidgets import *


class MyWindow(QWidget):

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

        self.setWindowTitle('PyQt5 弹出窗口')
        self.resize(400, 300)
        # 加了self为全局布局,没加为局部布局
        h1 = QHBoxLayout(self)
        btn = QPushButton('弹出窗口')
        btn.clicked.connect(self.do_btn)
        h1.addWidget(btn)

    def do_btn(self, event):  # 信息
        # 后两项分别为按钮(以|隔开)、默认按钮(省略则默认为第一个按钮)
        reply = QMessageBox.information(self, "消息框标题", "这是一条消息。", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyWindow()
    win.show()
    sys.exit(app.exec_())

效果:
示例2
点击弹出窗口按钮则弹出消息框,更换为其它消息框,更改do_btn函数中的语句即可。
上面几种就是消息框中图标有所不同,注意 QMessageBox.about (关于消息框) 后不需要选项。

按钮类型

(1) 标准按钮类型

按钮类型
共有七种标准按钮类型,可自行组合。

(2) 自定义按钮类型

import sys
from PyQt5.QtWidgets import *


class MyWindow(QWidget):

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

        self.setWindowTitle('PyQt5 弹出窗口')
        self.resize(400, 300)
        # 加了self为全局布局,没加为局部布局
        h1 = QHBoxLayout(self)
        btn = QPushButton('弹出窗口')
        btn.clicked.connect(self.do_btn)
        h1.addWidget(btn)

    def do_btn(self):
        # 创建Question消息框
        self.reply = QMessageBox(QMessageBox.Question, "消息框标题", "这是一条消息。")
        # 添加自定义按钮
        self.reply.addButton('确定', QMessageBox.YesRole)
        self.reply.addButton('取消', QMessageBox.NoRole)
        # 设置消息框中内容前面的图标
        # self.reply.setIcon(1)
        self.reply.show()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyWindow()
    win.show()
    sys.exit(app.exec_())

注意!!!这里reply需赋值为窗口的对象属性 (即self.reply),否则窗口会一闪而过!!!
效果:
自定义

三、QFileDialog–弹出文件对话框

1. 文件夹

dir_ = QFileDialog.getExistingDirectory(self, "选取文件夹", "C:/")  # 起始路径

弹出C盘目录,dir_ 返回选择的文件夹路径。

2. 单文件

# 设置文件扩展名过滤,注意用双分号间隔
file_, filetype = QFileDialog.getOpenFileName(self, "选取文件", "C:/", "All Files (*);;Text Files (*.txt)")       

file_ 返回选择的文件路径。

3. 多文件

files, ok = QFileDialog.getOpenFileNames(self, "多文件选择", "C:/", "All Files (*);;Text Files (*.txt)")

按钮 Ctrl 可多选文件,files返回选择文件的路径。

4. 保存

file_, ok = QFileDialog.getSaveFileName(self, "文件保存", "C:/", "All Files (*);;Text Files (*.txt)")

保存为txt类型,file_ 返回文件保存路径。

5. 另存为

file_, ok = QFileDialog.getSaveFileName(self, "文件另存为", "C:/", "All Files (*);;Text Files (*.txt)")

保存为txt类型,file_ 返回文件保存路径。
似乎跟 4. 保存 没什么区别。。。

示例

import sys
from PyQt5.QtWidgets import *


class MyWindow(QWidget):

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

        self.setWindowTitle('PyQt5 弹出窗口')
        self.resize(400, 300)
        # 加了self为全局布局,没加为局部布局
        h1 = QHBoxLayout(self)
        btn = QPushButton('弹出窗口')
        btn.clicked.connect(self.do_btn)
        h1.addWidget(btn)

    def do_btn(self, event):
        dir_ = QFileDialog.getExistingDirectory(self, "选取文件夹", "C:/")  # 起始路径


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyWindow()
    win.show()
    sys.exit(app.exec_())

点击 弹出窗口 弹出 起始路径,即可选择文件夹。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:50:39  更:2022-04-14 23:53:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:52:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码