Ich bin neu in Python-Programmierung. Ich versuche eine Software zu entwickeln, die auf Raspy3
läuft. Das Problem ist, dass ich möchte, dass eine Taste während x Sekunden eine Funktion ausführt (in diesem Fall 10). Ich habe versucht, mit QTimer.singleshot, Lambda verwenden, aber es friert mein Computer und Windows-Konsole sagt etwas wie: QEventDispatcherWin32::registertime: Failed to create a timer - the process has used the maximun number of handlers allowed by the system
(aus dem Spanischen übersetzt) Hier ist der Code des Programms ist:Führe eine Funktion für x Sekunden auf 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_()
Ich verwende Python 2.7 .11 und PyQt 4 GUI Ich weiß nicht, wie es zu beheben ist. Jede Hilfe wäre willkommen. Vielen Dank im Voraus
nicht sicher, ob dies hilft, aber Ihre Lambda-Funktion gibt keine Variablen zurück, wenn es aufgerufen wird, in 'self.crono' ist die Variable cr privat und keine Änderungen an der cr-Variable in der Bereich von 'blanco' – Aaron
@Aaron +1, auch, was meinst du mit" führe eine Funktion während 'x' Sekunden aus". Ich nehme an, Sie möchten die Bezeichnung für 1 Sekunde ändern, nachdem eine Schaltfläche geklickt wurde? –
@Aaron, das kann den Grund für das Scheitern erklären ... Ich werde das überprüfen. –