-
Guten Tag,
ich versuche beim Start eines neuen Fensters eine Definition zu laden aber finde nichts dazu. Wie kann ich beim Start des Fensters automatisch die def load ansprechen ? Vielen Dank im vorraus.
def load(self): with open("Slot1.txt", "r") as f: file_text1 = f.readline() self.pushButton.setText(file_text1)
-
@Julsenn Ist dieses Fenster deine eigene Classe? Wenn ja, dann kannst du https://doc.qt.io/qt-5/qwidget.html#showEvent überschreiben und dort load aufrufen.
Oder du rufst load() dort auf wo du auch das Fenster erzeugst/anzeigst. -
@jsulm danke schonmal fürs antworten ich verzweifel hier :D.
Ja die class ist meine wie kann ich dann das load() event einsetzen also wo ?class Ui_Handbetrieb(object): def load(self): # anfangsevent erstellen !!! with open("Slot1.txt", "r") as f: file_text1 = f.readline() #zeilenangabe hinten self.pushButton.setText(file_text1)
-
Hi
def showEvent(self, ev): load(self) return QWidget.showEvent(self, ev)
Dies ist eine Funktion, die Qt kurz vor der Anzeige des Widgets aufruft
-
@mrjj
Yes indeed to your answer. But perhaps you should remind the OP thatshowEvent()
will be called as the window is minimized->maximized as well as when first shown, I think, and then he wouldn't always want to re-load()
that file to initialize the button? IIRC I keep astatic bool first_shown
state variable in the widget.My German isn't good enough to translate the above :)
-
@JonB sorry i'm still amateur. You mean here ?
if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Handbetrieb = QtWidgets.QWidget() ui = Ui_Handbetrieb() ui.setupUi(Handbetrieb) Handbetrieb.show() #here is the show event ? sys.exit(app.exec_())
-
@Julsenn
I can't type it all, but you will need to change over to like:class MeinHandbetrieb(QtWidgets.QWidget): def showEvent(self, ev): load(self) return QWidget.showEvent(self, ev) ... Handbetrieb = MeinHandbetrieb() ... Handbetrieb.show()
I know you are an amateur, but for this and other things Qt you have to understand C++ sub-classing.
-
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def save_text(self): with open("test.txt", "w") as f: text = self.eingabe_1.toPlainText() f.write(text) def open_text(self): #this automatically when window start with open("test.txt", "r") as f: file_text = f.readlines()[0] self.eingabe_2.setText(file_text) def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.eingabe_1 = QtWidgets.QTextEdit(self.centralwidget) self.eingabe_1.setGeometry(QtCore.QRect(80, 180, 301, 51)) self.eingabe_1.setObjectName("eingabe_1") self.eingabe_2 = QtWidgets.QTextEdit(self.centralwidget) self.eingabe_2.setGeometry(QtCore.QRect(80, 260, 301, 51)) self.eingabe_2.setObjectName("eingabe_2") self.speichern_btn = QtWidgets.QPushButton(self.centralwidget) self.speichern_btn.setGeometry(QtCore.QRect(420, 180, 121, 51)) self.speichern_btn.setObjectName("speichern_btn") self.speichern_btn.clicked.connect(self.save_text) self.oeffnen_btn = QtWidgets.QPushButton(self.centralwidget) self.oeffnen_btn.setGeometry(QtCore.QRect(580, 180, 131, 51)) self.oeffnen_btn.setObjectName("oeffnen_btn") self.oeffnen_btn.clicked.connect(self.open_text) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.speichern_btn.setText(_translate("MainWindow", "Speichern")) self.oeffnen_btn.setText(_translate("MainWindow", "Öffnen")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
-
@Julsenn
Don't know what you mean. You can see the code and how it works, so long asui.open_text()
is called before whatever window has theself.pushButton()
is shown then the text will be read in & set. Use a debugger, or put in someprint()
-type statements, to see what is/is not being called at what point. That is what developing programs is all about :)