当前位置: 首页>>代码示例>>Python>>正文


Python QTimer.connect方法代码示例

本文整理汇总了Python中PySide.QtCore.QTimer.connect方法的典型用法代码示例。如果您正苦于以下问题:Python QTimer.connect方法的具体用法?Python QTimer.connect怎么用?Python QTimer.connect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PySide.QtCore.QTimer的用法示例。


在下文中一共展示了QTimer.connect方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: Connector

# 需要导入模块: from PySide.QtCore import QTimer [as 别名]
# 或者: from PySide.QtCore.QTimer import connect [as 别名]
class Connector():
    '''Модуль для обеспечения взаимодействия модуля-обработчика OpenVPN 
    и интерфейса QML, обеспечивает полное многоуровневое логирование
    событий (через модуль logging) 
    '''
    def __init__(self):
        '''Инициализация модуля
        
        Выполняется инициализация интерфейса, логгера и статуса соединения
        Определяется операционная система и задаются соответствующие пути 
        '''
        self.view = Interface(self)
        self.logger = logging.getLogger('RocketOne.Connector')
        self.connected = False
        # Пути до OpenVPN
        if os.name == "nt":
            #Windows paths
            self.ovpnpath = 'C:\\Program Files (x86)\\OpenVPN'
            self.path = getBasePath() + '/'                 
            self.ovpnconfigpath = self.ovpnpath + '\\config\\'
            self.configfile = 'config.ini' # self.ovpnconfigpath +
            self.ovpnexe = self.ovpnpath + '\\bin\\openvpnserv.exe'
            self.traymsg = 'OpenVPN Connection Manager'
            self.logger.debug("Started on Windows")
        elif os.name == "posix":
            #Linux Paths
            self.ovpnpath = ''
            self.path = getBasePath() + '/'                 
            self.ovpnconfigpath = self.ovpnpath + '//home//alexei//SOLOWAY//'
            self.ovpnexe = self.ovpnpath + 'openvpn'
            self.configfile = 'config.ini'
            self.traymsg = 'OpenVPN Connection Manager'
            self.logger.debug("Started on Linux")
    
    # Интерфейс обрабатывающий входящие сигналы    
    @QtCore.Slot(str, str)
    def connect(self, login, passwd):
        """ Процедура инициализации соединения
        Является слотом QT (для получения логина и пароля из QML)
        """
        self.port = 0
        port = self.getNextAvailablePort()
        # Если логин и пароль пусты или дефолтные то не соединяемся
        if (not login) or (not passwd) \
            or (login == "Login") or (passwd == "password"):
            return
        self.login = login
        self.password = passwd
        # если стоит галочка запомнить пароль TODO: убрать конструкцию
        if self.view.remember():
            self.write_settings(login, passwd, remember=True)
        else:
            self.write_settings("", "")
        # Пробуем запустить OpenVPN, не получается - не подключаемся
        try:
            self.process = subprocess.Popen([self.ovpnexe,
                          '--config', self.ovpnconfigpath + 'Soloway.ovpn',
                          '--management', '127.0.0.1', '{0}'.format(port),
                          '--management-query-passwords',
                          '--management-log-cache', '200',
                          '--management-hold'],
                          cwd=self.ovpnconfigpath)
        except Exception as e:
            self.logger.error("OpenVPN process failed to execute " + str(e))
            return
        self.logger.debug("Subprocess started")
        # Задаем таймер для asyncore loop устанавливаем на 1 раз в секунду
        self.timer = QTimer()
        self.timer.connect(SIGNAL("timeout()"), self.looper)
        self.timer.start(500)
        self.port = port
        """ Устанавливаем однократный таймер для запуска обработчика OpenVPN
        Без таймера openvpn не успевает запуститься, так что при
        попытке соединения с ним asyncore.async_chat выпадает 
        """
        self.atimer = QTimer()
        self.atimer.setSingleShot(True)
        self.atimer.timeout.connect(self.manage_process)
        self.atimer.start(1000)
        # Записываем время старта, через 20 секунд без подключения - disconnect
        self.start_time = datetime.now()
        # Отправляем сигнал в QML о начале соединения
        self.emit_signal("100")
    
    def looper(self):
        """ looper проверяет не наступил ли таймаут подключения и
        собирает данные с async_chat. Завязан на таймер self.timer
        """
        ex_time = datetime.now() - self.start_time
        ex_time = ex_time.total_seconds()
        if (ex_time > 20) and not self.connected:
            self.logger.error("Connection time out")
            self.disconnect("401")
        asyncore.poll()
    
    def manage_process(self):
        """Запускает обработчик OpenVPN. Выделить в отдельную процедуру пришлось,
        так как завязан на однократный таймер self.atimer.
        """
        self.sock = ManagementInterfaceHandler(self, '127.0.0.1', self.port)
#.........这里部分代码省略.........
开发者ID:droppoint,项目名称:Rocket-Launcher,代码行数:103,代码来源:Connector.py


注:本文中的PySide.QtCore.QTimer.connect方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。