Home 您所在的位置:网站首页 searchphpmod=forum Home

Home

2023-09-20 01:06| 来源: 网络整理| 查看: 265

Hallo Bin neu in Python und verstehe das Konzept der Klassen nicht.

Folgende Bedingungen: -ich arbeite mit QTCreator

mit dem QTCreator hab ich ein Projekt Anwendung(QT für Python) -> Fenster -Ui erstellt darin sind folgende Py-Dateien mainwindow.py form.ui ui_form.py usw... In der mainwindow.py ist die Klasse "class MainWindow(QMainWindow,Ui_StartFenster):" definiert

In dem Fenster ist eine Tabelle (QTableWidget) eingezeichnet. Diese wird mit sqlite daten gefüllt.(Funktioniert) Das füllen derTabelle habe ich in einer Funktion (def loaddata1(self):) der Klasse "class MainWindow(QMainWindow,Ui_StartFenster):" definiert Nun möchte ich die Funktion "loaddata1" aber in einer eigenständigen Klassen (eigene Datei "DB_Schnitt.py" )auslagern.

Ich habe keine Anhnung wie ich die Funktion (Methode) richtig schreiben muss und wie ich die Tabelle damit füllen kann.

Über Eure Hilfe wäre ich sehr dankbar.

Gruß Califax

DB_Schnitt1.py

# This Python file uses the following encoding: utf-8 import sqlite3 from PySide6.QtWidgets import QApplication, QMainWindow, QDialog, QMessageBox, QTableWidgetItem #from mainwindow import MainWindow class DB_Schnitt: def __init__(self): pass def ist_db_Datei_vorhanden1(): print ("ja1") # def loaddata1(self): # #Verbindung zur sqlite3-Datenbank herstellen und GUI-Tabelle mit Daten füllen # con_db=sqlite3.connect("Haushaltsbuch/STL_HR_DB.sdb") # start_fenster = MainWindow() # #Hier wird die Tabelle "Haushaltsbuch" aufgerufen und es werden nur 3 Datensätze ausgelesen # sql_Befehl= "SELECT * FROM Haushaltsbuch LIMIT 30" # result = con_db.execute(sql_Befehl) # #self.tbl_eingabeTabelle.setRowCount(0) # start_fenster.bl_eingabeTabelle.setRowCount(0) # for row_number,row_data in enumerate(result): # # self.tbl_eingabeTabelle.insertRow(row_number) # start_fenster.tbl_eingabeTabelle.insertRow(row_number) # for column_number, data in enumerate(row_data): # # self.tbl_eingabeTabelle.setItem(row_number,column_number,QTableWidgetItem(str(data))) # start_fenster.tbl_eingabeTabelle.setItem(row_number,column_number,QTableWidgetItem(str(data))) # con_db.close()

mainwindow.py

# This Python file uses the following encoding: utf-8 import sys import os import sqlite3 from DB_Schnitt1 import DB_Schnitt from PySide6.QtWidgets import QApplication, QMainWindow, QDialog, QMessageBox, QTableWidgetItem from PySide6 import QtSql # Important: # You need to run the following command to generate the ui_form.py file # pyside6-uic form.ui -o ui_form.py, or # pyside2-uic form.ui -o ui_form.py from ui_form import Ui_StartFenster from ui_About import Ui_cls_About class MainWindow(QMainWindow,Ui_StartFenster): def __init__(self, parent=None): super().__init__(parent) # self.ui = Ui_StartFenster() # self.ui.setupUi(self) self.setupUi(self) self.menue_Beenden.triggered.connect(self.close) self.menue_Info.triggered.connect(self.info_oeffnen) self.menue_Jahrgang.triggered.connect(self.arbeits_pfad_pruefen) # self.bt_Versuch.clicked.connect(self.Konstrukter_1) #Hier wird die Breite der Spalte 7(0 mitgezählt) auf 400 gestellt self.tbl_eingabeTabelle.setColumnWidth(6,400) self.mod_offene_Leistungen = QtSql.QSqlRelationalTableModel() self.mod_offene_Leistungen.setTable("Haushaltsbuch") self.mod_offene_Leistungen.setRelation(1,QtSql.QSqlRelation("Haushaltsbuch","id","Zaehler")) self.tbl_eingabeTabelle.setItemDelegate(QtSql.QSqlRelationalDelegate()) self.leistungen_anzeigen() DB_Schnitt.ist_db_Datei_vorhanden() #self.DB_Schnitt.loaddata1() self.loaddata11() def leistungen_anzeigen(self): model = self.mod_offene_Leistungen # query = QtSql.QSqlQuery() # abfrage = """ update Leistungen set # Summe_brutto = Menge * Preis, # Summe_netto = Menge * (Preis / (100.00 + mwst) *100)""" # query.exec(abfrage) model.select() #self.tbl_eingabeTabelle.setModel(model) #gesamt_brutto = sum([model.data(model.index(zeile,8)) for zeile in range(model.rowCount())]) # t = f"Offene Leistunge ({ gesamt_brutto:0.2f} € )" # self.lb_offene_Leistung.setText(t) def info_oeffnen(self): # stl = STL_HRKalender() #stl.ausgabefenster() cls_About.exec_() def loaddata11(self): #Verbindung zur sqlite3-Datenbank herstellen und GUI-Tabelle mit Daten füllen con_db=sqlite3.connect("Haushaltsbuch/STL_HR_DB.sdb") #Hier wird die Tabelle "Haushaltsbuch" aufgerufen und es werden nur 3 Datensätze ausgelesen sql_Befehl= "SELECT * FROM Haushaltsbuch LIMIT 130" result = con_db.execute(sql_Befehl) self.tbl_eingabeTabelle.setRowCount(0) for row_number,row_data in enumerate(result): self.tbl_eingabeTabelle.insertRow(row_number) for column_number, data in enumerate(row_data): self.tbl_eingabeTabelle.setItem(row_number,column_number,QTableWidgetItem(str(data))) con_db.close() def arbeits_pfad_pruefen(self): msg = QMessageBox() msg.setWindowTitle("Meldung") arbeits_ordner1 = os.path.dirname(__file__) #msg.setText(arbeits_ordner1) #x = msg.exec_() arbeits_ordner = os.path.isdir(os.path.join("Haushaltsbuch")) if arbeits_ordner: # msg.setText("Der Ordner Haushaltsbuch ist vorhanden!! " ) x = msg.exec_() #print (arbeits_ordner) wert = True return wert else: msg.setText(""" Bitte legen Sie einen Ordner mit dem Namen #Haushaltsbuch# an. Darin wird dann die Sqlite Datenbank gespeichert. Aktueller Pfad ist """) x = msg.exec_() #print (arbeits_ordner) # self.bt_beenden() wert = False return wert #db = QtSql.QSqlDatabase.addDatabase("QSQLITE") #db.setDatabaseName("STL_HR_DB.sdb") #db.setDatabaseName("Haushaltsbuch/STL_HR_DB.sdb") class CLS_About(QDialog,Ui_cls_About): def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.bt_beenden.clicked.connect(self.beenden) def beenden(self): #Your desired functionality here print("Er wurde beenden des unter Fensters gedrückt!!!") #import sys self.close() if __name__ == "__main__": app = QApplication(sys.argv) widget = MainWindow() cls_About = CLS_About() widget.show() sys.exit(app.exec())


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有