Ich hatte mir den rat von euch nochmal zu herzen genommen und wollte meine GUI die Ich vor ein paar Tagen hier gepostet habe nochmal überarbeiten aber Ich bekomme es einfach nicht hin folgendes Problem:
Letzte mal hatte Ich die Pfade zu den Datei global angelegt -> Ich sollte das lieber in der Class machen , meine GUI ermittelt indirekt die Pfade durch die eingabe des Users.
Wenn der User seine Eingaben gemacht hat hat habe Ich Signale verbunden die prüfen ob der Startknopf freigegeben werden kann -> das hat auch wunderbar geklappt nur wenn Ich es jetzt in der Klasse versuche geht es nicht mehr weil egal ob Ich die Pfade als Attribut oder instanz festlege -> und egal wie Ich diese ändere mit dem Klassennamen.fertigdatei etc jedes mal habe Ich das gefühl das diese für mich "Varibalen " erst nach einem durchlauf geändert werden und nicht sofort ... Wie Kann Ich das ändern oder wo ist mein denkfehler ?
Um das genaue Problem zu erklären:
Ich möchte so wie es vorher auch war 2 änderungen machen und wenn diese ok sind soll der start knopf freigegeben werden dadurch das gefühlt das Programm nun aber einen durchlauf benötigt um die Parameter zu ändern muss Ich 3 änderungen machen damit der startknopf freigegeben wird .
Code: Alles auswählen
import sys
from functools import partial
from pathlib import Path
from PyQt5.QtWidgets import (QWidget, QApplication, QMessageBox, QFileDialog)
from PyQt5.QtCore import pyqtSignal,pyqtSlot
from PyQt5 import uic
#Benötige Datein
from Klimareport_Mat import main as hauptprogramm
from PDF import pdf_umwandlung
class GUI(QWidget):
fertigdatei_pfad = Path(r"C:\Daten\Fertigdaten")
speicher_pfad = Path(r"D:\Klimareport Dieter")
def __init__(self):
super().__init__()
#self.fertigdatei_pfad = Path(r"C:\Daten\Fertigdaten")
#self.speicher_pfad = Path(r"D:\Klimareport Dieter")
self.UI_DATEI = uic.loadUi(r"C:\Users\Marcel\PycharmProjects\Klimareport\gui.ui",self)
self.initUI()
self.show()
def initUI(self):
self.pfad_nicht_vorhanden()
self.slots()
def pfad_nicht_vorhanden(self):
if not self.speicher_pfad.exists():
self.msg = QMessageBox()
self.msg.setIcon(QMessageBox.Information)
self.msg.setText("Der angegebene Pfad" + str(self.speicher_pfad) + " ist nicht vorhanden!")
self.msg.setWindowTitle("Information")
self.msg.show()
def slots(self):
self.UI_DATEI.Dateipfad.mouseDoubleClickEvent = self.fertigdaten_interaktion
self.UI_DATEI.Speicherpfad.mouseDoubleClickEvent = self.speicherpfad_interaktion
self.UI_DATEI.Speicherpfad.textChanged.connect(self.start)
self.UI_DATEI.Dateipfad.textChanged.connect(self.start)
# self.win.startknopf.clicked.connect(self.hauptprogramm_ablauf)
def fertigdaten_interaktion(self, event):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
ausgewaehlter_pfad = QFileDialog.getOpenFileName(self, "Öffnen", directory=str(self.fertigdatei_pfad),
filter="*.wrt;;All Files(*)", options=options)
self.UI_DATEI.Dateipfad.setText(ausgewaehlter_pfad[0])
self.fertigdatei_pfad = Path(str(ausgewaehlter_pfad[0]))
print(self.fertigdatei_pfad)
self.UI_DATEI.setFocus()
def speicherpfad_interaktion(self,event):
options = QFileDialog.Options()
options = QFileDialog.DontUseNativeDialog
ausgewaehlter_pfad = QFileDialog.getExistingDirectory(options=options, directory=str(self.speicher_pfad))
self.UI_DATEI.Speicherpfad.setText(ausgewaehlter_pfad)
self.speicher_pfad = Path(str(ausgewaehlter_pfad))
# self.win.checkBox_speicherpfad.setDisabled(True)
self.UI_DATEI.Speicherpfad.setEnabled(False)
self.UI_DATEI.checkBox_speicherpfad.setChecked(False)
self.UI_DATEI.setFocus()
def start(self):
if self.UI_DATEI.Speicherpfad.text() and self.UI_DATEI.Dateipfad.text() != "":
if self.fertigdatei_pfad.exists() and self.speicher_pfad.exists() == True:
self.UI_DATEI.startknopf.setEnabled(True)
else:
self.UI_DATEI.startknopf.setEnabled(False)
if __name__=="__main__":
app = QApplication(sys.argv)
gui = GUI()
sys.exit(app.exec_())