ich moechte ein Gui mit Tabs erstellen, die einige Elemente beinhalten.
Jeder Tab ist zur besseren Ansprechung in einer neuen Klasse.
Nach der Initiierung moechte ich auf den Status oder den Inhalt der Elemente zugreifen, um damit zu arbeiten.
Mittels return bekomme ich (natuerlich) nur den Status vor der Initiierung, aber nicht den der manuellen Veraenderung.
Wie greife ich auf den neuen Inhalt oder Status aus einer anderen Klasse zu?
In meinem Beispiel soll der Print-Button den Inhalt des Edits ausgeben.
Auch wenn ich diesen im GUI nachtraeglich geaendert habe.
Zur Zeit bekomme ich nur den Inhalt vor der Initiierung.
Eine Ueberlegung:
Mittels signal ".textChanged" des Edits den Inhalt mittels configparser abzuspeichern und den Inhalt der .ini
ueber den print button wieder abzufragen. Vielleicht geht das eleganter.
Ich weiß, ich keonnte den Tab und das Edit einfach in der MainKlasse erstellen. Das stellt fuer mich aber keine Loesung dar...
Vielen Dank im Voraus
VG 3cosystem
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import sys
from PyQt5 import QtWidgets
class Ui_MainWindow(QtWidgets.QDialog):
def __init__(self, master=None):
super().__init__()
self.setupUI()
def setupUI(self):
self.setWindowTitle("Printen, was im Edit steht.")
box = QtWidgets.QVBoxLayout()
tabWidget = QtWidgets.QTabWidget()
self.btn_print = QtWidgets.QPushButton("print")
self.btn_print.clicked.connect(self.print)
tabelemente = tab() # creating an object of tabinhalt (instance), has all the functions
tabWidget.addTab(tabelemente, "Erster Tab")
self.editinhalt = tabelemente.getedittext()
box.addWidget(tabWidget)
box.addWidget(self.btn_print)
self.setLayout(box)
def print(self):
print(self.editinhalt)
class tab(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.edit = QtWidgets.QLineEdit(self)
self.edit.setText("Hallo")
def getedittext(self):
return self.edit.text()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
MainWindow = Ui_MainWindow()
MainWindow.show()
sys.exit(app.exec_())