Ich benötige erneut eure hilfe ich sitze nun seit Tage an einem eigentlich sehr leichten Problem fest und bekomme es einfach nicht gelöst Ich habe das Internet rauf und runter durchsucht ( beziehungsweise mich nun auch mehrere Stunden mit der QT Dokumentation beschäftigt nur leider bin ich einfach zu blöd oder verstehe manchmal nicht richtig was die von mir möchten.
Also zu meinem eigentlichen Problem ich Möchte Quasi eine Mainwindow erstellen wo ich in der Toolbar mehrere quasi Menüpunkte habe die wenn ich sie ankliche in form von Widgets bzw Dialogen sich öffnen .... ICh hab das alles auch soweit hinbekommen:
Code: Alles auswählen
import sys
from PyQt5 import QtCore
from PyQt5 import QtWidgets
from PyQt5.QtCore import QSize
from PyQt5.QtGui import QIcon, QGuiApplication, QStandardItemModel, QColor, QPalette
from PyQt5.QtWidgets import QAction, QPushButton, QVBoxLayout, QDialog, QApplication, QMainWindow, QTableWidget, \
QHeaderView
from PyQt5.QtCore import pyqtSignal,pyqtSlot
class Hauptbildschirm(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
# Ist nur für die erprobung als kommentar
# Startbildschirm.showFullScreen()
# Hier sind verschiedene Auflösungen schnell auswählbar
# Startbildschirm.resize(720,576)
# Startbildschirm.resize(1280,720)
self.resize(1920, 1080)
# Startbildschirm.resize(2560 ,1440)
self.setWindowTitle("MAT")
self.setWindowIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\system.png"))
#Ab hier wird das Menü angelegt:
self.menubar = QtWidgets.QMenuBar(self)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1920, 30))
#Statusbar wird nicht benutzt kann aber so leichter eingebunden werden:
#self.statusbar = QtWidgets.QStatusBar(self.centralwidget)
#self.statusbar.setobjektname = ("statusbar")
#Startbildschirm.setStatusBar(self.statusbar)
#hier wurde die Frotschrittanzeige ( wie weit die Messung mit dem durchlauf ist anglegt)
self.progressbar = QtWidgets.QProgressBar(self)
self.progressbar.setGeometry(10,750,1550,30)
self.progressbar.setValue(100)
self.progressbar.setRange(0,100)
#Startknopf
self.Start = QtWidgets.QPushButton(self)
self.Start.setGeometry(QtCore.QRect(10, 700, 111, 30))
#Stopknopf
self.Stop = QtWidgets.QPushButton(self)
self.Stop.setGeometry(QtCore.QRect(1415, 700, 111, 30))
#Beschriftung über der Fortschrittanzeige
self.Fortschrittsanzeige = QtWidgets.QLabel()
self.Fortschrittsanzeige.setGeometry(QtCore.QRect(12, 725, 111, 30))
#das Menü ist soweit vorbereitet,ab hier werden die Menüpunkte erzeugt:
#1ter Menüpunkt:
self.Cockpit = QtWidgets.QMenu(self.menubar)
self.menubar.addAction(self.Cockpit.menuAction())
#2ter Menüpunkt:
self.Formulareinstellungen = QtWidgets.QMenu(self.menubar)
self.menubar.addAction(self.Formulareinstellungen.menuAction())
#3ter Menüpunkt:
self.Messdatenparamter = QtWidgets.QMenu(self.menubar)
self.menubar.addAction(self.Messdatenparamter.menuAction())
#4ter Menüpunkt:
self.Messdaten = QtWidgets.QMenu(self.menubar)
self.menubar.addAction(self.Messdaten.menuAction())
#5ter Menüpunkt:
self.Datenexportieren = QtWidgets.QMenu(self.menubar)
self.menubar.addAction(self.Datenexportieren.menuAction())
#6ter Menüpunkt:
self.Einstellungen = QtWidgets.QMenu(self.menubar)
self.menubar.addAction(self.Einstellungen.menuAction())
self.setMenuBar(self.menubar)
#Die Menüpunkte wurde hier erzeugt nun werden die Unterpunkte erzeugt:
#Unterpunkt zu Menü 1
self.Exit = QtWidgets.QAction()
self.Exit.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\door-open-out"))
self.Exit.triggered.connect(self.close)
self.Cockpit.addAction(self.Exit)
#Unterpunkte zu Menü 2:
self.Formulare = QtWidgets.QAction()
self.Formulare.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\gear"))
self.Formulare.triggered.connect(Fomrulardialog)
self.Formulareinstellungen.addAction(self.Formulare)
self.Graphen = QtWidgets.QAction()
self.Graphen.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\gear"))
self.Formulareinstellungen.addAction(self.Graphen)
#Unterpunkt zu Menü 3:
self.Stammdaten=QtWidgets.QAction()
# self.Stammdaten.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\png"))
self.Messdatenparamter.addAction(self.Stammdaten)
#Unterpunkte zu Menü 4:
self.Fertigdaten = QtWidgets.QAction()
#self.Fertigdaten.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\png"))
self.Messdaten.addAction(self.Fertigdaten)
self.Rohdaten = QtWidgets.QAction()
#self.Rohdaten.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\png"))
self.Messdaten.addAction(self.Rohdaten)
#Unterpunkte zu Menü 5:
self.Access = QtWidgets.QAction()
self.Access.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\document-access"))
self.Datenexportieren.addAction(self.Access)
self.FTP = QtWidgets.QAction()
self.FTP.setObjectName("FTP")
self.FTP.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\upload-cloud"))
self.Datenexportieren.addAction(self.FTP)
self.TXT = QtWidgets.QAction()
self.TXT.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\document"))
self.Datenexportieren.addAction(self.TXT)
self.Festplatte = QtWidgets.QAction()
self.Festplatte.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\drive-medium"))
self.Datenexportieren.addAction(self.Festplatte)
self.USB = QtWidgets.QAction()
self.USB.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\usb-flash-drive"))
self.Datenexportieren.addAction(self.USB)
self.Excel = QtWidgets.QAction()
self.Excel.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\document-excel"))
self.Datenexportieren.addAction(self.Excel)
self.Email = QtWidgets.QAction()
self.Email.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\mail"))
self.Datenexportieren.addAction(self.Email)
#Unterpunkte zu Menü 6
self.Datenübertragung = QtWidgets.QAction()
self.Datenübertragung.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\transmitter"))
self.Einstellungen.addAction(self.Datenübertragung)
self.USV = QtWidgets.QAction()
self.USV.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\battery"))
self.Einstellungen.addAction(self.USV)
self.Interpolieren = QtWidgets.QAction()
self.Interpolieren.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\flask"))
self.Einstellungen.addAction(self.Interpolieren)
self.AI =QtWidgets.QAction()
self.AI.setIcon(QIcon(r"C:\Users\Marcel\Desktop\MAT\Mat_Pycharm\Icons\robot"))
self.Einstellungen.addAction(self.AI)
#hier werden die Titel für die Menpunkte zugeordnet / festgelegt:
self.beschriftung()
def beschriftung(self):
self.beschriftung = QtWidgets.QApplication
self.Start.setText("Start")
self.Stop.setText("Stop")
self.Fortschrittsanzeige.setText("Fortschrittsanzeige:")
self.Cockpit.setTitle("Cockpit")
self.Formulareinstellungen.setTitle("Formular und Grapheneinstellungen")
self.Messdatenparamter.setTitle("Messdatenparameter")
self.Messdaten.setTitle("Messdaten")
self.Datenexportieren.setTitle("Daten exportieren")
self.Einstellungen.setTitle("Einstellungen")
self.Exit.setText("Exit")
self.Formulare.setText("Formulare")
self.Graphen.setText("Graphen")
self.Stammdaten.setText("Stammdaten")
self.Fertigdaten.setText("Fertigdaten")
self.Rohdaten.setText("Rohdaten")
self.Access.setText("Access")
self.FTP.setText("FTP")
self.TXT.setText("TXT")
self.Festplatte.setText("Festplatte")
self.USB.setText("USB")
self.Excel.setText("Excel")
self.Email.setText("Email")
self.Datenübertragung.setText("Datenübertragung")
self.USV.setText("USV")
self.Interpolieren.setText("Interpolieren")
self.AI.setText("Künstliche Intelligenz")
#Hier erzeugen wir einen neuen Dialog( Fenster)
class Fomrulardialog(QtWidgets.QDialog):
def __init__(self,Hauptbildschirm):
QtWidgets.QDialog.__init__(self)
self.show()
self.setWindowTitle("Formular-Einstellungen")
self.resize(1200,720)
self.table=QTableWidget()
self.table.setGeometry(QtCore.QRect(10, 200, 400, 200))
self.table.setColumnCount(4)
self.table.setHorizontalHeaderLabels(["Kanal","Text","Beschreibung","*"])
self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
if __name__ == '__main__':
app= QApplication(sys.argv)
Ha=Hauptbildschirm()
Fa = Fomrulardialog(Hauptbildschirm)
Ha.show()
sys.exit(app.exec_())
Hier sollte nun der Code eingeblendet sein ICh habe wie bereits beschrieben das Problem das ich nicht ganz in den Kopf bekomme wie Ich als Beispiel hier die Klasse Formulardialog dauerhaft geöffnet lasse ( folgende Sachen habe ich bereitsversucht)
1.) Die "" Show"" Methode ( hier verstehe ich mittlerweile wieso das nicht funktioniert das Fenster würde kurz geöffnet werden und danach ,,zerstört,,werden dadurch sieht man es so gut wie garnicht
2.) Die oben gezeigte Methode ( diese kommt aus einem anderen Beispiel der QT Doku hier öffnet sich jedoch gleich am Anfang beide Sachen was ich nicht möchte ,Ich möchte das sich das Fenster erst öffnet wenn Ich ihm das auch sage.
3.)Ich habe das Fenster schon mal dauerhaft am laufen gehabt in dem Ich einfach nur eine normale Methode aus dem Formulardialog gemacht habe ( def ......) da hat es auch alles geklappt (Ich verstehe auch wieso weil die Hauptschleife ja dauerhaft wieder durchlaufen wurde und so das bild auch dauerhaft angezeigt wurde...,mir ist es nur unglaublich wichtig das Ich das alles in einzelene Klassen mache ( jedes Unterprogramm vill ist das für den ein oder anderen nicht verständlich nur ich bin ein anfänger und so ist nunmal meine denkweise ( so kann ich das logisch nachvollziehen )
Ich hoffe ihr könnt mir ein denkanstoss in die richtige Richtung geben...
P.s Ich habe auch zum Teil gesehen das die Leute so vorgehen das Sie irgendwie die Namen ersetzten ( xyz = new xyz ) ist das vill die Lösung ?