pyqt4:在Qthread中使用定时器Qtimer注意

GUI main 部分,Work2是线程类

timer 调用线程类中的一个方法

实例化线程

self.s2_thread=Worker2()

定时器绑定要做的事情以及这个事情需要多长时间触发

        self.log_get=QtCore.QTimer()
        self.log_get.singleShot(30000,self.s2_thread.get_mem_error_logfile_content)
        self.log_get.singleShot(90000,self.s2_thread.get_mem_right_logfile_content)
       

定义触发开始的调用方法

 def qtimer_get_log(self):        self.log_get.start()
     

将调用方法和信号绑定

QtCore.QObject.connect(self.log_get, QtCore.SIGNAL("get_log_start()"), self.qtimer_get_log)
       

线程Qthread部分

在线程的run中根据需要的地方发起激活定时器的信号

class Worker2(QtCore.QThread):
    def __init__(self, parent=None):

        QtCore.QThread.__init__(self, parent)

  def get_mem_error_logfile_content(self):        filename=host_list[‘app75‘][‘autologfilename‘]        with open(filename,‘r‘) as f:            self.log_30_sec=f.read()            print ‘#‘*30 

  def get_mem_right_logfile_content(self):        filename=host_list[‘app75‘][‘autologfilename‘]        with open(filename,‘r‘) as f:            self.log_90_sec=f.read()            print ‘*‘*30
    def run(self):
        ......
        self.emit(QtCore.SIGNAL("get_log_start()"))
        ......  
时间: 2024-08-13 03:29:21

pyqt4:在Qthread中使用定时器Qtimer注意的相关文章

在QThread中使用QTimer

设计界面原型用定时器模拟程序运行,处理数据的程序运行时间很长,并要实时显示进度,需要使用多线程技术.运行程序出现下面的警告: 1 QObject::startTimer: timers cannot be started from another thread 警告无法再另一个进程中开始定时器.在QTimer的官方文档里,有下面一段话: 1 In multithreaded applications, you can use <a href="http://qt-project.org/d

Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)

在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度 1.QObject类的定时器 QObject是所有Qt对象的基类,它提供了一个基本的定时器.通过QObject::startTimer(),可以把一个一毫秒为单位的时间间隔作为参数来开始定时器,这个函数返回一个唯一的整数定时器的标识符.这个定时器开始就会在每一个时间间隔"触发",直到明确的使用这个定时器的标识符来调用QObjec

Qt类中使用定时器

QT定时器只能使用在进程或线程中. QT类中如果需要定时器,可以把定时工作安排在一个线程中执行. class aaa : public QThread { Q_OBJECT ... protected: //重写run函数 void run(); public slots: void timerOut(); private: QTimer *timer; } aaa::aaa(QThread *parent):QThread(parent) { timer = new QTimer(0); co

QT中使用定时器实现等待框的一实际应用情况

MainWindow::MainWindow(QWidget *parent) : CustomWindow(parent) { mIndex = 1; mpLoadLabel = new QLabel(this); mpTipLabel = new QLabel(this); mpTimer = new QTimer(this); mpTipLabel->setText(QString::fromLocal8Bit("拼命加载中...")); // 设定超时时间100毫秒 mp

MFC的DLL中实现定时器功能

方法一:创建一个线程, 反复读系统时间不就可以了? 如果定时要求不严,用Sleep就可以了.DWORD WINAPI TimerThread(LPVOID pamaram) { UINT oldTickCount, newTickCount; oldTickCount = GetTickCount(); //获取的是毫秒数 while(TRUE) { while(TRUE) { newTickCount = GetTickCount(); // 获取的是毫秒数 if(newTickCount -

Qt线程(2) QThread中使用WorkObject

一般继承QThread的WorkThread都会在重载的run()中创建临时的WorkObject,这样能确定这个WorkObject在该thread中使用 那如果这个WorkObject是个Singleton是种什么情况呢? 方式2:在QThread中使用WorkObject 1.创建WorkObject 1 #include <QObject> 2 #include <QDebug> 3 #include <QThread> 4 5 #define DEBUG(x)

Java中的定时器

注意:内容来自网络他人文章,特此声明 一.Java中的定时器 在JAVA中实现定时器功能要用的2个重要类是 Timer类:定时器类,需要一个TimerTask类的实例作为参数: TimerTask:定时器任务类,定时器要执行的任务在该类的run方法中定义. 二.实现定时器的两种写法 1.普通实现(相对于通过内部类来实现而言) 1 //先写一个类 2 public class TimeTest { 3 public static void main(String[] args) { 4 5 Tim

第十四篇:在SOUI中使用定时器

前言 定时器是win32编程中常用的制作动画效果的手段.在Win32编程中,可以使用::SetTimer来创建定时器,定时器消息会被会发到调用SetTimer时指定的HWND. 在SOUI中一般来说只有一个宿主窗口有HWND,所有的SWindow都属于一个宿主窗口,如此一来直接使用::SetTimer创建的定时器就难以直接分发到SWindow对象了. 在SOUI的控件中使用定时器 为了能够方便的在SWindow中使用定时器,在SOUI系统中,我们通过将定时器ID(共32位)按位进行分解: cla

QThread中的互斥、读写锁、信号量、条件变量

该文出自:http://www.civilnet.cn/bbs/browse.php?topicno=78431 在gemfield的<从pthread到QThread>一文中我们了解了线程的基本使用,但是有一大部分的内容当时说要放到这片文章里讨论,那就是线程的同步问题.关于这个问题,gemfield在<从进 程到线程>中有一个比喻,有必要重新放在下面温习下: ******************************* 最后用一个比喻来总结下: 1.一个进程就好比一个房子里有一