Funktion die in einer Klasse definiert ist beim Programmsart ausführen

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
d.elm
User
Beiträge: 12
Registriert: Freitag 13. Januar 2023, 18:24

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
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Indem du sie aufrufst?
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte Code zeigen. In Code Tags. damit er lesbar ist.
d.elm
User
Beiträge: 12
Registriert: Freitag 13. Januar 2023, 18:24

@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_()
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das mit den code tags war ernst gemeint.

Und vor dem Eintritt in die Hauptschleife muss einfach nur

Code: Alles auswählen

dialog.wertelesen()
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
d.elm
User
Beiträge: 12
Registriert: Freitag 13. Januar 2023, 18:24

@ _deets_
Danke für dem Hinweis. So funktioniert es.

@Sirius3
Leider ist die Formatierung beim Pick&Place verlorengegangen.
Sorry.
Wie ich Variablen oder Funktionen benenne ist doch Ansichtssache oder?
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

d.elm hat geschrieben: Donnerstag 9. Februar 2023, 09:08 Wie ich Variablen oder Funktionen benenne ist doch Ansichtssache oder?
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.
Benutzeravatar
__blackjack__
User
Beiträge: 13110
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. 🤷‍♂️
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten