Ich saß schon vor paar Monaten an einem Tool das mir Automatisch Logs auswerten sollte. (http://www.python-forum.de/topic-20953.html)
Hatte das Teil damals Frustriert liegen gelassen weil ichs einfach net Verstand.
Inzwischen hab ich was dazugelernt, hab das Script aufgeräumt und mir gleich gedacht, hey, verpack es doch gleich in ne GUI!
Hja... an sich kein Problem.
Leider bin ich auf etwas gestoßen was ich vorher nie gemacht hatte.
Ich will das wenn mein Button im "Checked" Status ist, mein Skript ausgeführt wird.
Das tut er auch... Leider führt er es tatsächlich mehr oder weniger endlos aus und wartet bis irgendwann diese Schleife unterbrochen wird...
Das ist aber erst am ende des Uploads aber der soll mir auch den Zwischenstand sagen!
Wie Löse ich
dieses Problem?
(Relevantes ab Zeile 44)
EDIT: So wie ich jetzt durch andere Threads rausgefunden habe, ist das was ich brauche dasmit das ganze Funktioniert entweder, das der Knopf in einem gewissen Intervall gedrückt wird wie die QButton.AutoRepeat Funktion (nur das diese wenn ich recht verstand nur bei nem Shortcut aktiviert wird) oder das hier als Schwer bezeichnete Threading.
Hab das letztere ausprobiert. Einmal über Pythons Thread und einmal über QThread. Aber ich hab da nicht ganz durchgeblickt was, warum ichs tu. Deswegen Funktionierte es wohl auch nicht,
Code: Alles auswählen
from PyQt4 import QtCore, QtGui
import os
import time
class Ui_LOGAuswerter(object):
def setupUi(self, LOGAuswerter):
LOGAuswerter.setObjectName("LOGAuswerter")
LOGAuswerter.resize(378, 247)
self.centralwidget = QtGui.QWidget(LOGAuswerter)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayoutWidget = QtGui.QWidget(self.centralwidget)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 351, 231))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtGui.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setObjectName("verticalLayout")
self.textEdit = QtGui.QTextEdit(self.verticalLayoutWidget)
self.textEdit.setObjectName("textEdit")
self.textEdit.setReadOnly(True)
self.verticalLayout.addWidget(self.textEdit)
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.pushButton = QtGui.QPushButton(self.verticalLayoutWidget)
self.pushButton.setCheckable(True)
self.pushButton.setFlat(False)
self.pushButton.setObjectName("pushButton")
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QtGui.QPushButton(self.verticalLayoutWidget)
self.pushButton_2.setObjectName("pushButton_2")
self.horizontalLayout.addWidget(self.pushButton_2)
self.verticalLayout.addLayout(self.horizontalLayout)
LOGAuswerter.setCentralWidget(self.centralwidget)
self.retranslateUi(LOGAuswerter)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("toggled(bool)"), self.starts)
QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("clicked(bool)"), LOGAuswerter.close)
QtCore.QMetaObject.connectSlotsByName(LOGAuswerter)
def retranslateUi(self, LOGAuswerter):
LOGAuswerter.setWindowTitle(QtGui.QApplication.translate("LOGAuswerter", "LOG Auswerter", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("LOGAuswerter", "Start", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton_2.setText(QtGui.QApplication.translate("LOGAuswerter", "Beenden", None, QtGui.QApplication.UnicodeUTF8))
def starts(self):
beendet = True
def suche():
f = open('/home/sepl/Test_Programme/test.txt', 'r')
lesen = f.readlines()[-4:]
lesen
if str(lesen).find('erfolgreich') != -1:
self.textEdit.insertPlainText("Transfer wird fortgesetzt.\n")
self.textEdit.ensureCursorVisible()
elif str(lesen).find('ERROR') != -1:
self.textEdit.insertPlainText("Tranfser Fehlgeschlagen. Bitte Neustarten!\n")
self.textEdit.ensureCursorVisible()
exit()
elif str(lesen).find('Transfer Beendet') != -1:
self.textEdit.insertPlainText("Transfer Erfolgreich beendet!\n")
self.textEdit.ensureCursorVisible()
exit()
else:
self.textEdit.insertPlainText("Problem: Fehlende Informationen?\n")
self.textEdit.ensureCursorVisible()
exit()
f.close()
while beendet:
suche()
time.sleep(5)
else:
self.textEdit.insertPlainText("Programm beendet")