Hallo, eine Frage die ich leider nicht selbst beantworten kann (trotz mehrerer Recherchen).
Wie kann ich eine Funktion die ich in einer Klasse definiert hab beim Programmsart ausführen?
Ich habe mir als Notlösung einen Button angelegt der die Funktion aufruft.
Ich möchte aber dass dieses beim Programmstart ohne ein zutun erfolgt.
Kann mir bitte Jemand einen Tip geben?
Danke
Funktion die in einer Klasse definiert ist beim Programmsart ausführen
@sparrow
die frage ist wo (an welcher Stelle) ich sie aufrufen muss!
@_deets_
Hier ein relevanter Ausschnitt
es soll Die funktion "wertelesen()" beim Programmstart aufgerufen werden.
Danke
import sys
from PyQt5 import QtWidgets, uic
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QTimer
from datetime import date, datetime, time, timedelta
import smbus
class Formular(QtWidgets.QDialog):
def __init__(self):
super().__init__()
self.ui = uic.loadUi("Werte.ui",self)
#Btn Bus Scan
self.pBtnBus.clicked.connect(self.Bus)
#Btn ENDE
self.pBtnENDE.clicked.connect(self.ENDE)
#Btn Datei lesen
self.pBtnWles.clicked.connect(self.Datles)
def Datles(self):
self.wertelesen()
def Bus(self):
a=1
def ENDE(self):
self.werteschreiben()
#-------------------------------------------------------------------
#Werte einlesen
def wertelesen(self):
f1=open('tmpwerte.dat','rt')
s=f1.readline();self.So1v.setText(s[0:5]);self.So1b.setText(s[5:10])
f1.close()
#-------------------------------------------------------------------
#-------------------------------------------------------------------
#Werte schreiben
def werteschreiben(self):
f1=open('tmpwerte.dat','wt')
s=self.So1v.text()+self.So1b.text()+'\n'; f1.write(s)
f1.close()
app = QtWidgets.QApplication(sys.argv)
dialog = Formular()
dialog.show()
app.exec_()
die frage ist wo (an welcher Stelle) ich sie aufrufen muss!
@_deets_
Hier ein relevanter Ausschnitt
es soll Die funktion "wertelesen()" beim Programmstart aufgerufen werden.
Danke
import sys
from PyQt5 import QtWidgets, uic
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QTimer
from datetime import date, datetime, time, timedelta
import smbus
class Formular(QtWidgets.QDialog):
def __init__(self):
super().__init__()
self.ui = uic.loadUi("Werte.ui",self)
#Btn Bus Scan
self.pBtnBus.clicked.connect(self.Bus)
#Btn ENDE
self.pBtnENDE.clicked.connect(self.ENDE)
#Btn Datei lesen
self.pBtnWles.clicked.connect(self.Datles)
def Datles(self):
self.wertelesen()
def Bus(self):
a=1
def ENDE(self):
self.werteschreiben()
#-------------------------------------------------------------------
#Werte einlesen
def wertelesen(self):
f1=open('tmpwerte.dat','rt')
s=f1.readline();self.So1v.setText(s[0:5]);self.So1b.setText(s[5:10])
f1.close()
#-------------------------------------------------------------------
#-------------------------------------------------------------------
#Werte schreiben
def werteschreiben(self):
f1=open('tmpwerte.dat','wt')
s=self.So1v.text()+self.So1b.text()+'\n'; f1.write(s)
f1.close()
app = QtWidgets.QApplication(sys.argv)
dialog = Formular()
dialog.show()
app.exec_()
Das mit den code tags war ernst gemeint.
Und vor dem Eintritt in die Hauptschleife muss einfach nur
Und vor dem Eintritt in die Hauptschleife muss einfach nur
Code: Alles auswählen
dialog.wertelesen()
Methodennamen und Attribute werden klein geschrieben. Man benutzt keine kryptischen Abkürzungen. Was soll denn das p bei pBtnWles? Was sind denn Wles? Kleine w? Und warum ruft der Button eine Funktion namens Datteln auf?
Eingerückt wird immer mit 4 Leerzeichen pro Ebene und nicht mal 4, 5, 8 oder gar 11!
Dateien öffnet man immer mit Hilfe des with-Statements.
Pro Zeile eine Anweisung; man benutzt keine Semikolons.
Wo wird geprüft, dass Solv und Solb (wieder kryptische Namen) beim Speichern exakt 5 Zeichen haben?
Kommentare, die nur aus Minuszeichen bestehen, enthalten wenig Informationen, und ein Kommentar "Werte schreiben" über einer Funktion mit dem Namen werteschreiben kann man auch getrost löschen. So wie alle anderen Kommentare auch. Kommentare sollten einen Mehrwert bieten, und erklären, warum etwas gemacht wird.
Das _ bei exec_ ist überflüssig.
Eingerückt wird immer mit 4 Leerzeichen pro Ebene und nicht mal 4, 5, 8 oder gar 11!
Dateien öffnet man immer mit Hilfe des with-Statements.
Pro Zeile eine Anweisung; man benutzt keine Semikolons.
Wo wird geprüft, dass Solv und Solb (wieder kryptische Namen) beim Speichern exakt 5 Zeichen haben?
Kommentare, die nur aus Minuszeichen bestehen, enthalten wenig Informationen, und ein Kommentar "Werte schreiben" über einer Funktion mit dem Namen werteschreiben kann man auch getrost löschen. So wie alle anderen Kommentare auch. Kommentare sollten einen Mehrwert bieten, und erklären, warum etwas gemacht wird.
Das _ bei exec_ ist überflüssig.
Gewiss, aber es ist auch eine Frage der Wartbarkeit und des Zeitaufwands, den es bedarf, um das Programm nach einiger Zeit wieder verstehen zu können. Im schlimmsten Fall kann auch letzteres mit vertretbaren Aufwand nicht mehr möglich sein.
- __blackjack__
- User
- Beiträge: 13931
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@d.elm: Du kannst gerne der Ansicht sein, dass Namenskonventionen keinen Mehrwert haben oder man Namen unverständlich oder gar irreführend wählen kann/sollte. Ist halt falsch. 
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware