AttributeError: 'Ui_MainWindow' object has no attribute 'karte_textfeld'
Verfasst: Montag 14. September 2020, 11:36
				
				Hallo Zusammen,
folgendes Problem macht mich wahnsinnig. Ich kriege es nicht gelöst:
Ich möchte die letzte Funktion
der Klasse Ui_Mainwindow von einer anderen Klasse aufrufen. Der Aufruf in dieser anderen Klasse sieht so aus:
Selbst wenn ich von der Klasse Ui_Mainwindow erben lasse, erhalte ich den AttributeError. Gäbe es in dieser PyQT5 Klasse einen Konstruktor, dann könnte ich diesen aufrufen und dann sollte die Logik auch gehen. Mit dieser setupUi(self, MainWindow) Funktion komme ich nicht klar. Wie kann ich Widgets dieser Klasse von außen verändern? 
Ich würde mich riesig freuen, wenn ihr mir weiterhelfen könnt.
Gruß,
m.g.o.d
			folgendes Problem macht mich wahnsinnig. Ich kriege es nicht gelöst:
Ich möchte die letzte Funktion
Code: Alles auswählen
    def changeElements(self, kartentext):
        self.karte_textfeld.setText(kartentext)Code: Alles auswählen
    def green(self):
        """ Random choice from Card Database """
        
        # Random Inhalt 
        self.connection = sqlite3.connect("karten.db")
        self.cursor_show = self.connection.cursor()
        self.cursor_show.execute("SELECT * FROM greencard")
        self.row = self.cursor_show.fetchall()
        self.zufallsliste = [element for element in self.row ]
        print("Zufallsliste", self.zufallsliste)
        self.zufall = choice(self.zufallsliste)
        print("Zufalls Element", self.zufall)
        print(self.zufall[1])
        self.cursor_show.close()
        self.kartentext = self.zufall[1]
        instanceonMainframe = Ui_MainWindow()
        instanceonMainframe.changeElements(self.kartentext)Code: Alles auswählen
 
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 634)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.red = QtWidgets.QPushButton(self.centralwidget)
        self.red.setGeometry(QtCore.QRect(520, 30, 171, 271))
        self.red.setText("")
        self.red.setObjectName("red")
        self.red.setStyleSheet("background-color: red")
        self.green = QtWidgets.QPushButton(self.centralwidget)
        self.green.setGeometry(QtCore.QRect(120, 30, 171, 271))
        self.green.setText("")
        self.green.setStyleSheet("background-color: green")
        self.green.setObjectName("green")
        self.yellow = QtWidgets.QPushButton(self.centralwidget)
        self.yellow.setGeometry(QtCore.QRect(320, 30, 171, 271))
        self.yellow.setText("")
        self.yellow.setObjectName("yellow")
        self.yellow.setStyleSheet("background-color: yellow")
        self.karte_textfeld = QtWidgets.QTextBrowser(self.centralwidget)
        self.karte_textfeld.setGeometry(QtCore.QRect(120, 360, 571, 151))
        self.karte_textfeld.setObjectName("karte_textfeld")
        self.readme = QtWidgets.QPushButton(self.centralwidget)
        self.readme.setGeometry(QtCore.QRect(350, 530, 89, 25))
        self.readme.setObjectName("readme")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(120, 330, 571, 16))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(120, 310, 571, 20))
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
        self.menubar.setObjectName("menubar")
        self.menuNeue_Karte_erstellen = QtWidgets.QMenu(self.menubar)
        self.menuNeue_Karte_erstellen.setObjectName("menuNeue_Karte_erstellen")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.action = QtWidgets.QAction(MainWindow)
        self.action.setObjectName("action")
        self.menuNeue_Karte_erstellen.addAction(self.action)
        self.menubar.addAction(self.menuNeue_Karte_erstellen.menuAction())
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Mein Kartenspiel"))
        self.readme.setText(_translate("MainWindow", "Vorlesen?"))
        self.menuNeue_Karte_erstellen.setTitle(_translate("MainWindow", "Neue Karte erstellen"))
        self.action.setText(_translate("MainWindow", "Anlegen"))
    def changeElements(self, kartentext):
        self.karte_textfeld.setText(kartentext)
        
        
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_())
Gruß,
m.g.o.d