Ich baue einen einfachen Geschwindigkeitsleser in Python als Übung. Grundsätzlich ein Spritz Klon.Der einfachste Weg, Pyg4 zu unterbrechen?
Was ist der richtige Weg, um die Funktion printword() zu stoppen, sobald ich es ausgeführt habe? Soll ich es in einen Thread stecken? Mit Threading oder QThread? Ich bin ein bisschen verloren.
#!/usr/bin/env python3
from time import sleep
import sys
from PyQt4 import QtGui, QtCore
class Fastreader(QtGui.QWidget):
def __init__(self):
super(Fastreader, self).__init__()
self.initUI()
def initUI(self):
self.le = QtGui.QLineEdit(self)
self.le.setAlignment(QtCore.Qt.AlignCenter)
self.le.move(20, 20)
self.btn = QtGui.QPushButton('Play', self)
self.btn.move(20, 50)
self.btn.clicked.connect(self.printword)
self.btn = QtGui.QPushButton('Stop', self)
self.btn.move(120, 50)
self.setGeometry(300, 300, 225, 80)
self.setWindowTitle('fastreader')
self.show()
def printword(self):
cb = QtGui.QApplication.clipboard()
text = cb.text()
words_per_minute = 200
sleeptime = 60.0/words_per_minute
for word in text.split(" "):
self.le.setText(word)
self.le.repaint()
sleep(sleeptime)
def main():
app = QtGui.QApplication(sys.argv)
ex = Fastreader()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Vielen Dank!
Vielen Dank für Ihre Zeit! Selbst nach ausgiebigen Tests konnte ich Ihren Vorschlag nicht zur Arbeit bringen. Aber ich werde in Zukunft mehr auf QThread schauen. –
@MarkusPreislinger, darf ich den Fehler wissen? Ich konnte den Code erfolgreich auf meiner Seite laufen lassen. Ich benutze Python 3.3 und pyqt 4 – MaThMaX
Beim Start passiert nichts - kein Fenster kommt auf. Manchmal taucht es plötzlich auf, aber wenn ich etwas drücke "Segmentierungsfehler (Core Dumped)". Ich habe versucht, es [mit diesem] (http://stackoverflow.com/questions/1736015/debugging-a-pyqt4-app) zu debuggen, gab aber nach einiger Zeit auf. Python 3.4.3+, PyQt 4.8.6, 4.2.0-36-generisch –