pyqt6 实现弹窗案例

本文涉及的产品
PolarSearch,搜索节点 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
PolarDB Agent Flow,2核4GB
简介: 本文介绍了如何实现一系列弹窗效果,包括基础弹窗、消息对话框、输入对话框和清除按钮。通过设置 `self.dialog = Dialog()` 可以轻松实现基础弹窗,而消息对话框则使用 `QMessageBox` 类。输入对话框支持文本、数字和下拉列表输入,清除按钮用于清空输入框内容。每个功能都通过按钮触发相应的槽函数来实现。

 本文我们实现一系列的弹窗效果,效果展示如下:

image.gif 编辑

实现这系列功能很简单,基本上都是类似的操作,我们从基础弹窗、消息弹窗到输入框弹窗及清除按钮的顺序来介绍。

1 基础弹框

我们只需要设置一个self.dialog = Dialog()就可以实现基础的弹窗效果。

我们创建一个QMainWindow,并把基础的弹窗对象配置到主窗口里。

下面代码设计主窗口:

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow,self).__init__(parent)
        # 标题
        self.setWindowTitle("弹窗测试")
        # 固定窗体大小
        self.setFixedSize(400,300)

image.gif

下面是基础弹窗对象:

def show_dialog(self):
        self.dialog = Dialog()
        self.dialog.show()
        self.dialog.exec()

image.gif

此时我们在主窗口里添加基础弹窗按钮,实现信号和槽的对应关系:

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

image.gif

效果如下:

image.gif 编辑

当点击的时候,弹出基础弹窗:

image.gif 编辑

2 消息对话框

消息对话框实现需要用到QMessageBox类,并按照下列代码进行方法的构造,创造槽函数。

def msg_dialog(self):
        reply = QMessageBox.information(self,'提示','我要在网上问问吗?',
                                        QMessageBox.StandardButton.Yes|QMessageBox.StandardButton.No,
                                        defaultButton=QMessageBox.StandardButton.No)
        if reply==QMessageBox.StandardButton.Yes:
            print("OK")

image.gif

接下来在主窗口里创建按钮,实现信号的触发,来调动这个槽函数。

self.btn2 = QPushButton(self)
self.btn2.setText("消息对话框")
self.btn2.move(230,50)
self.btn2.clicked.connect(self.msg_dialog)

image.gif

效果如下:

image.gif 编辑

3 输入对话框

输入对话框里你可以输入文字,也可以输入数字,也可以实现下拉列表,不过设计的槽函数如下:

#文本槽函数
    def text_dialog(self):
        text,ok = QInputDialog.getText(self,'文本测试','输入姓名:')
        if ok:
            self.te.setText(str(text))
    #下拉列表槽函数
    def item_dialog(self):
        items = ("PyQt基础","java高级教程","算法设计")
        item,ok = QInputDialog.getItem(self,"选项测试","课程列表",items,1,True)
        if ok and item:
            self.te.setText(item)
    #数字槽函数
    def int_dialog(self):
        num,ok = QInputDialog.getInt(self,"整数测试","输入成绩")
        if ok:
            self.te.setText(str(num))

image.gif

同样,在主窗体里添加信号触发按钮:

#文本输入框
        self.btnInput1 = QPushButton(self)
        self.btnInput1.setText("文本测试")
        self.btnInput1.move(30,120)
        self.btnInput1.clicked.connect(self.text_dialog)
        #选项输入框
        self.btnItem = QPushButton(self)
        self.btnItem.setText("选项测试")
        self.btnItem.move(130,120)
        self.btnItem.clicked.connect(self.item_dialog)
        # 整数输入框
        self.btnInt = QPushButton(self)
        self.btnInt.setText("整数测试")
        self.btnInt.move(230, 120)
        self.btnInt.clicked.connect(self.int_dialog)

image.gif

效果测试:

image.gif 编辑

4 清除按钮

实现清除很简单,只需要把输入框中的文字内容替换成空字符串就可以了,槽函数如下:

def cleanFun(self):
        currentContext = self.te.text()
        if currentContext != "":
            self.te.setText("")

image.gif

在页面面板中添加触发按钮,并简单的添加红色背景如下:

# 清除
        self.cleanBtn = QPushButton(self)
        self.cleanBtn.setText("清  除")
        self.cleanBtn.move(140, 260)
        self.cleanBtn.setStyleSheet("background-color:red;color:#FFF;font-size:18px")
        self.cleanBtn.clicked.connect(self.cleanFun)

image.gif

image.gif

相关文章
|
机器学习/深度学习 人工智能 编解码
CES亮点:AI赋能与产业创新 | DALL-E 3、SD等20+图像生成模型综述
随着科技飞速发展,CES(国际消费电子展)已然成为全球科技产业的风向标,每年的CES大会都是业界瞩目的盛事。回顾2024年CES大会,不难发现其亮点纷呈,其中以人工智能的深度赋能为最引人注目之处。AI技术的深入应用成为CES大会上的一大亮点,各大厂商纷纷展示了在AI领域的最新成果。
1018 0
|
Windows
windows 技术篇 - uispy 工具获取和使用,windows窗口属性快捷查看工具
windows 技术篇 - uispy 工具获取和使用,windows窗口属性快捷查看工具
2763 0
windows 技术篇 - uispy 工具获取和使用,windows窗口属性快捷查看工具
|
Python
python打包exe——pyinstaller遇到的那些坑及解决办法
pyinstaller的那些坑 问题一:failed to create process. 问题二:pyinstaller相关参数
4658 0
python打包exe——pyinstaller遇到的那些坑及解决办法
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
1133 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
XML JSON Ubuntu
Python实用记录(十五):PyQt/PySide6打包成exe,精简版(nuitka/pyinstaller/auto-py-to-exe)
本文介绍了使用Nuitka、PyInstaller和auto-py-to-exe三种工具将Python的PyQt/PySide6应用打包成exe文件的方法。提供了详细的安装步骤、打包命令和参数说明,适合新手学习和实践。
7700 0
|
数据安全/隐私保护
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
435 0
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
|
Shell 开发者 Docker
Python文件打包:一站式指南
本文深入探讨Python文件打包的各种方法,从基础的zip和tar工具到高级的setuptools、PyInstaller、cx_Freeze等,涵盖Docker镜像、虚拟环境及自包含可执行文件的打包方式。通过示例代码与详细解析,帮助开发者根据项目需求选择合适的打包方案,提升代码分发与部署效率。内容全面,适合各水平读者学习参考。
1523 7
|
前端开发 数据可视化 搜索推荐
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
2200 1
|
数据可视化 IDE 开发者
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
3326 1
|
Python
深入理解 Python 中的异步操作:async 和 await
Python 的异步编程通过 `async` 和 `await` 关键字处理 I/O 密集型任务,如网络请求和文件读写,显著提高性能。`async` 定义异步函数,返回 awaitable 对象;`await` 用于等待这些对象完成。本文介绍异步编程基础、`async` 和 `await` 的用法、常见模式(并发任务、异常处理、异步上下文管理器)及实战案例(如使用 aiohttp 进行异步网络请求),帮助你高效利用系统资源并提升程序性能。
1497 7