PyQt5之如何实现弹出窗口
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了PyQt5之如何实现弹出窗口,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。本文基于 windows 7 + pyth
千家信息网最后更新 2026年11月03日PyQt5之如何实现弹出窗口
这篇文章主要介绍了PyQt5之如何实现弹出窗口,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
本文基于 windows 7 + python 3.4
效果图:

取得弹出窗口的返回值

全部代码:
from PyQt5.QtWidgets import *from PyQt5.QtCore import Qt, pyqtSignal, QTimer class MyWindow(QWidget): def __init__(self): super().__init__() self.setWindowTitle('PyQt5 弹出窗口(框)大全') self.resize(400, 300) # 全局布局(注意参数 self) wl = QVBoxLayout(self) # 局部布局 h2 = QHBoxLayout() # 输入框 h3 = QHBoxLayout() # 消息窗口 h4 = QHBoxLayout() # 文件(夹)打开,保存 h5 = QHBoxLayout() # 颜色、字体、自定义 btn11 = QPushButton('输入:整数') btn12 = QPushButton('输入:小数') btn13 = QPushButton('输入:文本') btn14 = QPushButton('输入:多文') btn15 = QPushButton('输入:选项') btn21 = QPushButton('消息:信息') btn22 = QPushButton('消息:问答') btn23 = QPushButton('消息:警告') btn24 = QPushButton('消息:危险') btn25 = QPushButton('消息:关于') btn31 = QPushButton('文件:文件夹') btn32 = QPushButton('文件:单文件') btn33 = QPushButton('文件:多文件') btn34 = QPushButton('文件:保存') btn35 = QPushButton('文件:另存为') btn41 = QPushButton('颜色') btn42 = QPushButton('字体') btn43 = QPushButton('自定义') for btn in (btn11, btn12, btn13, btn14, btn15): h2.addWidget(btn) for btn in (btn21, btn22, btn23, btn24, btn25): h3.addWidget(btn) for btn in (btn31, btn32, btn33, btn34, btn35): h4.addWidget(btn) for btn in (btn41, btn42, btn43): h5.addWidget(btn) btn11.clicked.connect(self.do_btn11) # 输入:整数 btn12.clicked.connect(self.do_btn12) # 输入:小数 btn13.clicked.connect(self.do_btn13) # 输入:文本 btn14.clicked.connect(self.do_btn14) # 输入:多文 btn15.clicked.connect(self.do_btn15) # 输入:选项 btn21.clicked.connect(self.do_btn21) # 消息:信息 btn22.clicked.connect(self.do_btn22) # 消息:问答 btn23.clicked.connect(self.do_btn23) # 消息:警告 btn24.clicked.connect(self.do_btn24) # 消息:危险 btn25.clicked.connect(self.do_btn25) # 消息:关于 btn31.clicked.connect(self.do_btn31) # 文件:文件夹 btn32.clicked.connect(self.do_btn32) # 文件:单文件 btn33.clicked.connect(self.do_btn33) # 文件:多文件 btn34.clicked.connect(self.do_btn34) # 文件:保存 btn35.clicked.connect(self.do_btn35) # 文件:另存为 btn41.clicked.connect(self.do_btn41) # 颜色 btn42.clicked.connect(self.do_btn42) # 字体 btn43.clicked.connect(self.do_btn43) # 自定义 # 加到全局布局 wl.addLayout(h2) wl.addLayout(h3) wl.addLayout(h4) wl.addLayout(h5) self.window2 = MyWindow2() # 自定义窗口 self.window2.before_close_signal.connect(self.echo) # 接收自定义窗口关闭时发送过来的信号,交给 echo 函数显示 def echo(self, value): '''显示对话框返回值''' QMessageBox.information(self, "返回值", "得到:{}\n\ntype: {}".format(value, type(value)), QMessageBox.Yes | QMessageBox.No) #pass # ===================================================================== def do_btn11(self, event): # 输入:整数 #后面四个数字的作用依次是 初始值 最小值 最大值 步幅 value, ok = QInputDialog.getInt(self, "输入框标题", "这是提示信息\n\n请输入整数:", 37, -10000, 10000, 2) #self.echo(value) def do_btn12(self, event): # 输入:小数 #后面四个数字的作用依次是 初始值 最小值 最大值 小数点后位数 value, ok = QInputDialog.getDouble(self, "输入框标题", "这是提示信息\n\n请输入整数:", 37.56, -10000, 10000, 2) self.echo(value) def do_btn13(self, event): # 输入:文本 #第三个参数表示显示类型,可选,有正常(QLineEdit.Normal)、密碼( QLineEdit. Password)、不显示( QLineEdit. NoEcho)三种情况 value, ok = QInputDialog.getText(self, "输入框标题", "这是提示信息\n\n请输入文本:", QLineEdit.Normal, "这是默认值") self.echo(value) def do_btn14(self, event): # 输入:多文 value, ok = QInputDialog.getMultiLineText(self, "输入框标题", "这是提示信息\n\n请输入地址:", "默认的\n我的地址是\n中国广东广州番禺") self.echo(value) def do_btn15(self, event): # 输入:选项 #1为默认选中选项目,True/False 列表框是否可编辑。 items = ["Spring", "Summer", "Fall", "Winter"] value, ok = QInputDialog.getItem(self, "输入框标题", "这是提示信息\n\n请选择季节:", items, 1, True) self.echo(value) # ===================================================================== def do_btn21(self, event): # 消息:信息 reply = QMessageBox.information(self, "消息框标题", "这是一条消息。", QMessageBox.Yes | QMessageBox.No) self.echo(reply) def do_btn22(self, event): # 消息:问答 reply = QMessageBox.question(self, "消息框标题", "这是一条问答吗?", QMessageBox.Yes | QMessageBox.No) self.echo(reply) def do_btn23(self, event): # 消息:警告 reply = QMessageBox.warning(self, "消息框标题", "这是一条警告!", QMessageBox.Yes | QMessageBox.No) self.echo(reply) def do_btn24(self, event): # 消息:危险 reply = QMessageBox.ctitical(self, "消息框标题", "危险!程序即将强制退出!!!\n\n这个按钮再也点不开。", QMessageBox.Yes | QMessageBox.No) self.echo(reply) def do_btn25(self, event): # 消息:关于 reply = QMessageBox.about(self, "消息框标题", "这是关于软件的说明。。。", QMessageBox.Yes | QMessageBox.No) self.echo(reply) # ===================================================================== def do_btn31(self, event): # 文件:文件夹 dir = QFileDialog.getExistingDirectory(self, "选取文件夹", "C:/") # 起始路径 self.echo(dir) def do_btn32(self, event): # 文件:单文件 file_, filetype = QFileDialog.getOpenFileName(self, "选取文件", "C:/", "All Files (*);;Text Files (*.txt)") #设置文件扩展名过滤,注意用双分号间隔 self.echo(file_) def do_btn33(self, event): # 文件:多文件 files, ok = QFileDialog.getOpenFileNames(self, "多文件选择", "C:/", "All Files (*);;Text Files (*.txt)") self.echo(files) def do_btn34(self, event): # 文件:保存 file_, ok = QFileDialog.getSaveFileName(self, "文件保存", "C:/", "All Files (*);;Text Files (*.txt)") self.echo(file_) def do_btn35(self, event): # 文件:另存为 file_, ok = QFileDialog.getSaveFileName(self, "文件另存为", "C:/", "All Files (*);;Text Files (*.txt)") self.echo(file_) # ===================================================================== def do_btn41(self, event): # 颜色 color = QColorDialog.getColor(Qt.blue, self, "Select Color") self.echo(color) def do_btn42(self, event): # 字体 font, ok = QFontDialog.getFont() self.echo(font) def do_btn43(self, event): # 自定义 self.window2.show() class MyWindow2(QWidget): '''自定义窗口''' # 知识点: # 1.为了得到返回值用到了自定义的信号/槽 # 2.为了显示动态数字,使用了计时器 before_close_signal = pyqtSignal(int) # 自定义信号(int类型) def __init__(self): super().__init__() self.sec = 0 self.setWindowTitle('自定义窗口') self.resize(200,150) self.lcd = QLCDNumber(18, self) btn1 = QPushButton(self, text="测试") btn2 = QPushButton(self, text="关闭") layout = QVBoxLayout(self) layout.addWidget(self.lcd) layout.addWidget(btn1) layout.addWidget(btn2) self.timer = QTimer() self.timer.timeout.connect(self.update) # 每次计时结束,触发update btn1.clicked.connect(self.startTimer) btn2.clicked.connect(self.stopTimer) # 去到关闭前的处理 def update(self): self.sec += 1 self.lcd.display(self.sec) # LED显示数字+1 def startTimer(self): self.timer.start(1000) # 计时器每秒计数 def stopTimer(self): self.timer.stop() self.sec = 0 self.before_close_signal.emit(self.lcd.value()) # 发送信号,带参数 888 self.close() # 然后窗口关闭 # 默认关闭事件 def closeEvent(self, e): self.stopTimer()if __name__=="__main__": import sys app = QApplication(sys.argv) win = MyWindow() win.show() sys.exit(app.exec_())感谢你能够认真阅读完这篇文章,希望小编分享的"PyQt5之如何实现弹出窗口"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
文件
输入
消息
标题
这是
信息
整数
提示
危险
信号
字体
小数
数字
文件夹
文本
篇文章
颜色
问答
参数
布局
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网加科技
网络科技有限互联网
上海互联网科技有限公司
万易互联网科技有限公司
天津摩尔互联网科技
互联网科技logo设计
奔汉互联网科技
友谊互联网络科技
互联网高科技股票
上海卓越科技 互联网
多迪互联网科技有限公司
深圳互联网科技怎么样
南山科技园互联网公司有哪些
互联网科技创新服务
华夏恒生科技与互联网科技
互联网与数字科技关系
广州三三互联网科技有限公司
唐山双旺合互联网科技产业园
第三届互联网大会安防黑科技
互联网高科技绘画
广州紫鲸互联网科技有限公司
科技平台互联网
互联网与新科技
中国互联网科技发展
鑫亿盛互联网科技
掌上梦互联网科技
互联网金融和金融科技
互联网在线教育科技创业
互联网科技平台产品运营
恒生互联网科技趋势