Уведомления

Группа в Telegram: @pythonsu

#1 Март 15, 2012 11:42:09

mr-x
От:
Зарегистрирован: 2012-03-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Простенький таймер

Привет!

Проблема вроде пустячная, но второй день бьюсь - не могу разобраться. Питон только сел осваивать, ничо не понимаю.

Надо сделать таймаут на некоторый участок кода. В любом букваре есть пример, как это сделать:

 
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
fd = os.open(’/dev/ttyS0’, os.O_RDWR)
signal.alarm(0)
Проблема в том, что под виндой нет сигнала SIGALRM.

Поставил pyQt4. Там есть QtCore.QTimer. Но в силу моей малограмотности не могу разобраться. Вот так таймер работает:

class timer_test ( QtGui.QWidget ) :
def __init__ ( self, parent = None ) :
QtGui.QWidget.__init__ ( self, parent )

self.setWindowTitle ( 'timer_test' )

self.timer = QtCore.QTimer ()
QtCore.QObject.connect ( self.timer, QtCore.SIGNAL("timeout()"), self.print_test )

self.timer.start ( 1000 )

def print_test(self):
self.setWindowTitle ( '!!!!!!!!!!')

app = QtGui.QApplication ( sys.argv )
asd = timer_test ()
asd.show ()
app.exec_ ()
Только мне не надо никаких классов, виджетов. Без них пишет “QObject::startTimer: QTimer can only be used with threads started with QThread”

Подскажите, как победить таймер?



Офлайн

#2 Март 16, 2012 05:10:44

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Простенький таймер

mr-x
Надо сделать таймаут на некоторый участок кода.
import time
time.sleep(3)

Офлайн

#3 Март 16, 2012 08:12:41

mr-x
От:
Зарегистрирован: 2012-03-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Простенький таймер

Это же будет просто задержка. Кусок кода, на который требуется натянуть таймаут как висел, так висеть и будет.



Офлайн

#4 Март 16, 2012 08:56:55

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Простенький таймер

mr-x прочитав несколько раз ваш пост, я так и не понял что\кого вы хотите натянуть.
может это чем нибудь поможет:

import threading

def hello():
print "hello, world"

t = threading.Timer(10.0, hello)
t.start()

while 1:
if raw_input('>>>:') == 'q':
break



Офлайн

#5 Март 19, 2012 06:34:17

mr-x
От:
Зарегистрирован: 2012-03-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Простенький таймер

Хотел, чтобы что-то похожее на пример из учебника работало под виндой. С потоками работает. Спасибо!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version