PyQt5 QtWidgets.QMessageBox.information 触发时应用异常

使用Qt Designer画了一个界面后,在代码里加了消息提示的方法,执行时提示应用异常强制退出了。

    def btn_func(self):
        msg = self.lineEdit.text()
        QtWidgets.QMessageBox.information(self, '提示', '你输入了:' + msg)

在网上搜索了下,有个文章给出了一个解决方案,具体为啥还是不清楚,先记录下

第一个参数 "self.触发动作的组件"

    def btn_func(self):
        msg = self.lineEdit.text()
        QtWidgets.QMessageBox.information(self.toolButton, '提示', '你输入了:' + msg)

 

在pyqt中,我们可以通过自定义QMessageBox的子类来实现在对话框中添加进度条。 首先,需要导入相关的模块: ```python from PyQt5.QtWidgets import QMessageBox, QProgressDialog from PyQt5.QtCore import Qt, QBasicTimer ``` 然后,我们自定义一个类,并继承QMessageBox: ```python class MyMessageBox(QMessageBox): def __init__(self, parent=None): super().__init__(parent) self.progress = QProgressDialog(self) def showEvent(self, event): super().showEvent(event) self.timer = QBasicTimer() self.timer.start(100, self) def timerEvent(self, event): if not self.isVisible(): self.timer.stop() self.progress.setValue(self.progress.value() + 1) def closeEvent(self, event): super().closeEvent(event) self.timer.stop() ``` 在自定义类中,我们重写了showEvent函数,在对话框显示后启动计器,并重写了timerEvent函数,在计器周期触发更新进度条的值。 使用自定义的MyMessageBox类,可以在我们需要的地方调用它并显示进度条: ```python msg_box = MyMessageBox() msg_box.setIcon(QMessageBox.Information) msg_box.setWindowTitle("进度条示例") msg_box.setText("任务正在进行中,请等待...") msg_box.setStandardButtons(QMessageBox.Cancel) msg_box.progress.setMaximum(100) msg_box.progress.setValue(0) msg_box.show() # 模拟一个耗的任务 for i in range(100): # 执行一些任务操作 progress.setValue(i + 1) # 进行事件处理,以保证UI的更新 QApplication.processEvents() ``` 上述代码中,我们创建了一个MyMessageBox实例,并设置了对话框的标题、文本和图标等属性。然后设置了进度条的最大值和初始值,并显示对话框。 接下来,我们使用一个循环模拟一个耗的任务,并在循环内更新进度条的值。同使用QApplication.processEvents()来保证UI的更新。 最后,当任务完成或用户点击取消按钮,调用进度条实例的关闭函数关闭对话框。 这样,就可以在pyqt的QMessageBox中添加进度条了。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值