Я новичок в программировании на питоне. Я пытаюсь разработать программное обеспечение на Raspy3
. Проблема в том, что я хочу, чтобы кнопка выполняла функцию в течение x секунд (в этом случае 10). Я попытался с помощью QTimer.singleshot, используя лямбда, но она замерзает компьютер и окна консоли говорит что-то вроде: QEventDispatcherWin32::registertime: Failed to create a timer - the process has used the maximun number of handlers allowed by the system
(в переводе с испанского) Вот код программы:Выполнить функцию на x секунд на python
import sys
import time
from PyQt4.QtCore import *
from PyQt4.QtCore import (QTime)
from PyQt4.QtCore import pyqtSignal as Signal
from PyQt4.QtGui import *
import ui_1
class Ventana(QMainWindow, ui_1.Ui_Ventana):
def __init__(self, parent=None):
super(Ventana, self).__init__(parent)
self.setupUi(self)
self.showMaximized()
self.botonBlanco.clicked.connect(self.blanco)
self.sliderBlanco.valueChanged.connect(self.sliderC)
self.labelBlanco.setText("Toma muestra durante 60 segundos para setear el blanco")
blancoA = False
def blanco(self):
cr = 0
while cr != 10:
QTimer.singleShot(1000, lambda: crono(cr))
def crono(self, cr):
cr += 1
return cr
def sliderC(self):
tiempoBlanco = self.sliderBlanco.value()
self.labelBlanco.setText("Toma muestra durante %i segundos para setear el blanco" % tiempoBlanco)
if __name__ == "__main__":
app = QApplication(sys.argv)
form = Ventana()
form.show()
app.exec_()
Я использую Python 2.7 .11 и PyQt 4 GUI Я не знаю, как это исправить. Любая помощь будет оценена по достоинству. Заранее спасибо
Не уверен, что это помогает, но ваша лямбда-функция не возвращает никаких переменных, когда она вызывается, внутри 'self.crono' переменная cr является частной, и любые изменения в ней не будут вноситься в cr-переменную в область действия 'blanco' – Aaron
@Aaron +1, также что вы подразумеваете под« выполнением функции в течение 'x' секунд». Я предполагаю, что вы хотите изменить ярлык в течение 1 секунды после нажатия кнопки? –
@ Аарон, это может объяснить причину неудачи ... Я проверю это. –