python closeevent_python:pyqt接受重写的closeEvent中的close事件,如果条件满足而没有用户交互...

我试图阻止用户退出我的包含进度条的QDialog,并实现我想覆盖QdialogcloseEvent的closeEvent,这就是我的困境开始的地方。我不知道如何向重写的closeEvent传递某种形式的确认,即我的另一个线程中的非常长的进程已经完成,现在可以接受closeEvent。在

下面是我的代码结构class TaskThread(QtCore.QThread):

taskFinished = QtCore.pyqtSignal()

def __init__(self, var1, parent=None):

QThread.__init__(self, parent)

self.sel_proj = var1

def run(self):

#very long process for var1

self.taskFinished.emit()

class progress_win(QDialog):

def closeEvent(self, event):

#if only I can pass a variable here depending on the process

#like if finished == True:

#event.accept()

#else:

#event.ignore()

event.ignore()#for now

class Window(QtGui.QMainWindow, TaskThread):

#my main window, also contains other QDialog

def progbar(self):

self.prog_win = progress_win()

self.prog_win.resize(400, 100)

self.progressBar = QtGui.QProgressBar(self.prog_win)

self.progressBar.resize(410, 25)

self.progressBar.move(15, 40)

self.progressBar.setRange(0,1)

self.prog_win.installEventFilter(self)

self.prog_win.show()

self.myLongTask = TaskThread(var1 = myDataToBeProcessed)

self.myLongTask.taskFinished.connect(self.onFinished)

def onStart(self):

self.progressBar.setRange(0,0)

self.myLongTask.start()

def onFinished(self):

self.progressBar.setRange(0,1)

self.processResult = self.myLongTask.processedVar1 #getting my result from the long process

self.prog_win.close()

我希望在进程结束时关闭Qdialog,但不希望在进程正在进行时关闭Qdialog。我可以从onFinished函数将变量传递给重写的事件吗?如果没有,那最好的办法是什么?

我经常看到的例子是:

^{pr2}$

这需要用户交互,如果有一个指南或例子,我可以遵循我想要的想法,那就太好了。在

基本上,我想忽略来自用户的progbar QDialog的关闭事件,并让类似函数的东西来处理关闭。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值