PyQt5显示对话框Dialog 代码实例

Table of Contents

方法一:用Python代码编写一个对话框类然后显示

方法二:用QtDesigner设计一个对话框UI然后让其显示

总结


PyQt5对话框有很多种,从PyQt5类关系图中可以看出,常用的有QMessageBox, QInputDialog,QFontDialog, QFileDialog, QColorDialog等。本文主要是用两种方法来演示如何显示一个普通的对话框。代码本质是一样的,大家可以根据需要自由发挥。

​​​​​​​方法一:用Python代码编写一个对话框类然后显示

1. 新建一个testDialog.py,输入以下代码

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QDialog, QLabel
from PyQt5 import QtCore


"""
Lily PyQt5 tutorial

In this example, we show a dialog.

Author: Lily Yu
Website: https://blog.csdn.net/yl_best/article/category/8312614
Last edited: November 2018
"""


class Example(QDialog):

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

        self.initUI()

    def initUI(self):
        self.setWindowTitle('Dialog')
        self.resize(400, 300)   # set dialog size to 400*300
        self.lb = QLabel("Code style - Hello PyQt5 Dialog!",self)        # add a label to this dialog
        self.lb.setGeometry(QtCore.QRect(70, 40, 201, 51))   # set label position and size
        self.show()


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

2. 右击,选择“Run ‘testDialog’”,执行画面如下

​​​​​​​方法二:用QtDesigner设计一个对话框UI然后让其显示

  1. 用QtDesigner创建一个UI,选择“Dialog without Buttons”
  2. 在其上添加一个Label,输入文字“UI style - Hello PyQt5 Dialog!”,如下图
  3. 保存为“dialog_test.ui”

 

4. 使用我们之前配置好的工具pyuic来将其转为dialog_test_ui.py.(不会配置的朋友可以参考我的配置说明文章《PyCharm+PyUic快捷菜单工具配置(高级)---分离界面和逻辑》)

5. 新建一个test.py,输入以下代码

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QDialog
import dialog_test_ui     # module dialog_test_ui.py
from PyQt5.QtCore import *      # for Qt.ApplicationModal

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

    # 因为使用Qt Designer设计的ui是默认继承自object类,不提供show()显示方法,
    # 所以我们需要生成一个QDialog对象来重载我们设计的Ui_Dialog类,从而达到显示效果。
    MainDialog = QDialog()      # 创建一个主窗体(必须要有一个主窗体)
    myDialog = dialog_test_ui.Ui_Dialog()   # 创建对话框
    myDialog.setupUi(MainDialog)   # 将对话框依附于主窗体
    # 设置窗口的属性为ApplicationModal模态,用户只有关闭弹窗后,才能关闭主界面
    # MainDialog.setWindowModality(Qt.ApplicationModal)
    MainDialog.show()

    sys.exit(app.exec_())

需要特别说明的是,因为使用Qt Designer设计的ui是默认继承自object类,可以查看“dialog_test_ui.py”文件,不提供show()显示方法,所以我们需要生成一个QDialog对象来重载我们设计的Ui_Dialog类,从而达到显示效果。

     6. 右击,选择“Run ‘test’”,执行画面如下

​​​​​​​总结

用Python代码编写的需要自己提前构思并一点点实现代码,

用QtDesigner设计的比较方便,可以直观显示,维护起来简单,尤其是开发复杂窗体时效率较高。个人推荐这种方法。

这两个方法大家看个人喜好选择。

<think>首先,用户的问题是:"请问PyQt6 文件对话框 示例代码"。这是一个关于PyQt6文件对话框的示例代码请求。 根据系统级指令: - 所有行内数学表达式必须使用 $...$ 格式。 - 独立公式必须使用 $$...$$ 格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 - 回答结构清晰,帮助用户逐步解决问题,尽量保证回答真实可靠。 - 参考站内引用:引用[1]到[4]是关于PyQt5的,但用户现在用的是PyQt6。所以,我需要基于PyQt6来回答,因为用户指定了PyQt6。 用户指定了PyQt6,所以我应该提供PyQt6的示例代码。引用[1]到[4]是关于PyQt5的,但PyQt6是较新版本,语法类似但有细微变化。例如,在PyQt6中,一些导入和类名可能不同。 关键点: - PyQt6的文件对话框类是QFileDialog。 - 用户想要打开文件对话框的示例代码。 - 我需要提供完整的、可运行的代码示例。 步骤: 1. **理解需求**:用户想要一个PyQt6文件对话框的示例代码,特别是打开文件对话框。 2. **准备代码**:基于PyQt6文档和常识,编写一个简单的示例。 - 导入必要的模块:QApplication, QFileDialog。 - 创建应用实例。 - 使用QFileDialog.getOpenFileName()来打开文件对话框。 - 打印或处理选中的文件路径。 3. **结构回答**: - 以清晰的结构呈现。 - 使用中文解释。 - 提供代码块,使用Markdown代码格式。 4. **生成相关问题**:在回答末尾,添加相关问题,类似示例中的"§§相关问题§§"。 5. **引用标识**:如果引用站内内容,添加引用标识。但站内引用是关于PyQt5的,所以我可能需要调整或基于PyQt6提供新代码。既然用户指定了PyQt6,我应该提供针对PyQt6的代码,而不直接复制引用。 站内引用: - 引用[1]: PyQt5打开文件对话框代码。 - 引用[2]: PyQt文件对话框介绍。 - 引用[3]: PyQt6文件对话框示例(但这里是PyQt6,引用中说"Python学习笔记-PyQt6对话框",有PyQt6代码)。 - 引用[4]: PyQt5保存文件对话框。 在引用[3]中,有PyQt6的代码片段: ```python filedialog = QFileDialog() filedialog.setFileMode(QFileDialog.FileMode.AnyFile) filedialog.setFilter(QDir.Filter.Files) if filedialog.exec(): filenames = filedialog.selectedFiles() self.ledit_filepath.setText(filenames[0]) ``` 但这是更底层的用法。用户可能想要简单的getOpenFileName方法。 在PyQt6中,QFileDialog.getOpenFileName()是常用的静态方法。 标准PyQt6打开文件对话框代码: ```python from PyQt6.QtWidgets import QApplication, QFileDialog app = QApplication([]) file_path, _ = QFileDialog.getOpenFileName(None, "Select file", "", "All Files (*)") print(file_path) ``` 类似引用[1],但针对PyQt6。 PyQt6和PyQt5在QFileDialog上类似,但导入路径不同:PyQt6.QtWidgets。 现在,构建回答: - 开头解释:简要介绍PyQt6文件对话框。 - 提供示例代码:完整的可运行代码。 - 解释代码:用中文解释关键部分。 - 生成相关问题:在末尾添加相关问题。 相关问题: 1. PyQt6文件对话框的常见用法有哪些? 2. 如何在PyQt6中实现保存文件对话框? 3. PyQt6与PyQt5在文件对话框上有何区别? 4. 如何自定义文件对话框的过滤器? 确保回答真实可靠:基于PyQt6文档。 最终回答结构: - 标题:PyQt6文件对话框示例 - 解释 - 代码块 - 解释关键点 - 相关问题 添加引用标识:如果直接引用站内内容,但这里我基于站内引用[3]调整,所以可以添加引用。 在引用[3]中有PyQt6代码,所以我可以在解释中引用它。</think>### PyQt6 文件对话框示例代码PyQt6 中,文件对话框通过 `QFileDialog` 类实现,支持文件打开、保存和目录选择功能。以下是完整的、可运行的示例代码,包含打开文件对话框的实现。代码基于 PyQt6 的官方文档设计,确保语法正确性和兼容性[^3]。 #### 完整示例代码 ```python from PyQt6.QtWidgets import QApplication, QFileDialog, QMainWindow, QPushButton, QVBoxLayout, QWidget, QLabel import sys class FileDialogExample(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("PyQt6 文件对话框示例") self.setGeometry(100, 100, 400, 200) # 创建界面组件 self.label = QLabel("未选择文件", self) self.button_open = QPushButton("打开文件", self) self.button_save = QPushButton("保存文件", self) # 布局设置 layout = QVBoxLayout() layout.addWidget(self.label) layout.addWidget(self.button_open) layout.addWidget(self.button_save) container = QWidget() container.setLayout(layout) self.setCentralWidget(container) # 连接按钮信号 self.button_open.clicked.connect(self.open_file_dialog) self.button_save.clicked.connect(self.save_file_dialog) def open_file_dialog(self): """打开文件对话框并获取文件路径""" file_path, _ = QFileDialog.getOpenFileName( self, # 父窗口 "选择文件", # 对话框标题 "", # 初始目录(空表示默认目录) "文本文件 (*.txt);;所有文件 (*)" # 文件过滤器 ) if file_path: self.label.setText(f"已选择文件: {file_path}") print("文件路径:", file_path) # 控制台输出路径 def save_file_dialog(self): """保存文件对话框并获取保存路径""" file_path, _ = QFileDialog.getSaveFileName( self, "保存文件", "", "文本文件 (*.txt);;PDF 文件 (*.pdf)" ) if file_path: self.label.setText(f"文件将保存至: {file_path}") if __name__ == "__main__": app = QApplication(sys.argv) window = FileDialogExample() window.show() sys.exit(app.exec()) ``` #### 代码说明 1. **核心功能**: - `QFileDialog.getOpenFileName()`: 打开文件选择对话框,返回文件路径[^3]。 - `QFileDialog.getSaveFileName()`: 打开文件保存对话框,返回保存路径[^4]。 - 文件过滤器(如 `"文本文件 (*.txt);;所有文件 (*)"`)允许用户按类型筛选文件。 2. **关键参数**: - **父窗口**: `self` 指定对话框隶属于主窗口。 - **标题**: 自定义对话框标题(例如 `"选择文件"`)。 - **初始目录**: 空字符串 `""` 使用系统默认目录。 - **过滤器**: 用 `;;` 分隔不同文件类型(例如 `"图像 (*.png *.jpg);;文档 (*.pdf)"`)。 3. **运行步骤**: - 安装 PyQt6: `pip install pyqt6` - 复制上述代码到 `.py` 文件并运行。 - 点击 "打开文件" 按钮测试文件选择,路径会显示在界面和控制台。 #### 注意事项 - 如果只需要简单对话框(无需完整 GUI),简化代码如下: ```python from PyQt6.QtWidgets import QApplication, QFileDialog app = QApplication([]) file_path, _ = QFileDialog.getOpenFileName(None, "选择文件", "", "所有文件 (*)") print("选中的文件:", file_path) ``` - PyQt6 与 PyQt5 的主要区别在于模块路径(例如 `PyQt6.QtWidgets` 替代 `PyQt5.QtWidgets`)和部分枚举值更新[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值