Python QTimer在对话框关闭后运行
我有一个QDialog,在这里我创建了一个QTimer对象,它每隔n秒触发一个函数。关闭对话框(点击x按钮)后,计时器仍在启动,似乎没有被破坏。我怎样才能阻止它?目前作为一种解决方法,我在输入closeEvent()时显式调用Qtimer.stop() 我希望在关闭窗口时删除每个类成员,即使我显式调用解构器时,Qtimer对象仍然存在Python QTimer在对话框关闭后运行,python,qt,pyqt4,Python,Qt,Pyqt4,我有一个QDialog,在这里我创建了一个QTimer对象,它每隔n秒触发一个函数。关闭对话框(点击x按钮)后,计时器仍在启动,似乎没有被破坏。我怎样才能阻止它?目前作为一种解决方法,我在输入closeEvent()时显式调用Qtimer.stop() 我希望在关闭窗口时删除每个类成员,即使我显式调用解构器时,Qtimer对象仍然存在 from PyQt4 import QtGui, QtCore import sys def update(): print "tick..."
from PyQt4 import QtGui, QtCore
import sys
def update():
print "tick..."
class Main(QtGui.QDialog):
def __init__(self, parent = None):
super(Main, self).__init__(parent)
self.timer = QtCore.QTimer()
self.timer.timeout.connect(update)
self.timer.start(2000)
# scroll area
self.scrollArea = QtGui.QScrollArea()
self.scrollArea.setWidgetResizable(True)
# main layout
self.mainLayout = QtGui.QVBoxLayout()
self.setLayout(self.mainLayout)
def closeEvent(self, evt):
print "class event called"
self.timer.stop()
myWidget = Main()
myWidget.show()
计时器功能的主要API是QTimer
。那个班
提供定时定时器,在定时器触发时发出信号,以及
继承QObject
,使其与
大多数GUI程序。通常的使用方法如下:
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updateCaption()));
timer->start(1000);
QTimer
对象被制作成此小部件的子对象,以便
此小部件被删除,计时器也被删除。接下来,它的timeout()
信号被连接到将进行工作的插槽,它被启动
值为1000毫秒,表示将超时
每一秒
<>在C++中,计时器对小部件或另一个代码> QObjult<代码>进行了表示,然后它们的寿命与setLayout
时,布局将成为父级。计时器不知道它的父对象,因此当小部件被销毁时,它不会被销毁。它只是位于堆上,仍然由QApplication
事件循环运行
因此,要么将self传递给QTimer
的构造函数,要么调用QTimer
上的setParent
将其正确设置到对象树中
更新:显然,setParent
在PyQt中不起作用。只需在QTimer
构造函数中传入self
希望有帮助。
计时器功能的主要API是QTimer
。那个班
提供定时定时器,在定时器触发时发出信号,以及
继承QObject
,使其与
大多数GUI程序。通常的使用方法如下:
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updateCaption()));
timer->start(1000);
QTimer
对象被制作成此小部件的子对象,以便
此小部件被删除,计时器也被删除。接下来,它的timeout()
信号被连接到将进行工作的插槽,它被启动
值为1000毫秒,表示将超时
每一秒
<>在C++中,计时器对小部件或另一个代码> QObjult<代码>进行了表示,然后它们的寿命与setLayout
时,布局将成为父级。计时器不知道它的父对象,因此当小部件被销毁时,它不会被销毁。它只是位于堆上,仍然由QApplication
事件循环运行
因此,要么将self传递给QTimer
的构造函数,要么调用QTimer
上的setParent
将其正确设置到对象树中
更新:显然,setParent
在PyQt中不起作用。只需在QTimer
构造函数中传入self
希望有帮助。
计时器功能的主要API是QTimer
。那个班
提供定时定时器,在定时器触发时发出信号,以及
继承QObject
,使其与
大多数GUI程序。通常的使用方法如下:
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updateCaption()));
timer->start(1000);
QTimer
对象被制作成此小部件的子对象,以便
此小部件被删除,计时器也被删除。接下来,它的timeout()
信号被连接到将进行工作的插槽,它被启动
值为1000毫秒,表示将超时
每一秒
<>在C++中,计时器对小部件或另一个代码> QObjult<代码>进行了表示,然后它们的寿命与setLayout
时,布局将成为父级。计时器不知道它的父对象,因此当小部件被销毁时,它不会被销毁。它只是位于堆上,仍然由QApplication
事件循环运行
因此,要么将self传递给QTimer
的构造函数,要么调用QTimer
上的setParent
将其正确设置到对象树中
更新:显然,setParent
在PyQt中不起作用。只需在QTimer
构造函数中传入self
希望有帮助。
计时器功能的主要API是QTimer
。那个班
提供定时定时器,在定时器触发时发出信号,以及
继承QObject
,使其与
大多数GUI程序。通常的使用方法如下:
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updateCaption()));
timer->start(1000);
QTimer
对象被制作成此小部件的子对象,以便
此小部件被删除,计时器也被删除。接下来,它的timeout()
信号被连接到将进行工作的插槽,它被启动
值为1000毫秒,表示将超时
每一秒
<>在C++中,计时器对小部件或另一个代码> QObjult<代码>进行了表示,然后它们的寿命与