Open a new window does not work - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Open a new window does not work (/thread-40169.html) |
Open a new window does not work - Nietzsche - Jun-13-2023 Hello, i have a ui for the live plotter window. In this UI i have an menu point "Settings" (liveplotterEinstellungen). I load the UI and then connect with signal and slot to the menu point from the ui to a function (def einstellungen_klicked()) with should open a new window and print a text. I don't get an error but i don't see a text after click the button. Can anyonw help? import pyqtgraph as pg from PyQt6.QtWidgets import QMainWindow, QDialog from PyQt6 import uic import numpy as np from PySide6.QtGui import Qt import time SAMPE_ARRAY = 100 # Laden der UI-Datei für das Einstellung Fenster im Liveplotter uiclass, baseclass = uic.loadUiType("plotter_live_window.ui") # Laden Sie die UI-Datei ui_file2 = "plotter_live_window.ui" ui2 = uic.loadUi(ui_file2) liveplotterEinstellungen = ui2.liveplotterEinstellungen # Laden der UI-Datei für das Einstellung Fenster im Liveplotter einstellungs_fenster = uic.loadUi("liveplotter_einstellungen.ui") class PlotterWindow(QMainWindow, uiclass): def __init__(self, df): super().__init__() self.plot_item = None self.setupUi(self) self.actionAktualisieren.triggered.connect(self.update_button_plotter) self.data = np.random.normal(size=SAMPE_ARRAY) # Beispiel für zufällige Daten self.timer = pg.QtCore.QTimer() self.timer.timeout.connect(self.update_plot_data) self.timer.start(800) # Aktualisierung alle 50 Millisekunden def plot(self, df): self.plot_item = self.graphWidget.plot(self.data, pen='w') # Erstellen des Plot-Items def update_plot_data(self): from safe_to_excel import df spo2_list = df['Red'].tail(SAMPE_ARRAY).astype(float) # Gibt die letzten 100 Werte aus spo2_list.reset_index(drop=True, inplace=True) # Setze den Index zurück index = 0 # Startindex für den Datenabruf while index < SAMPE_ARRAY: data_point = spo2_list[index] # Datenpunkt für den aktuellen Index print(f"Datenpunkt {index + 1}: {data_point}") # Datenpunkt printen self.data = np.roll(self.data, -1) self.data[-1] = data_point self.plot_item.setData(y=self.data) # Aktualisieren der Daten des Plot-Items pg.QtCore.QCoreApplication.processEvents() # Aktualisieren des Plot-Widgets time.sleep(0.017) # Pause von 10 Millisekunden # pg.QtCore.QTimer.singleShot(50, # pg.QtCore.QCoreApplication.instance().quit) # Warten auf Timer-Timeout (50 ms) index += 1 # Nachdem alle 100 Datenpunkte abgearbeitet wurden # Aktualisieren Sie das DataFrame `df` und laden Sie neue Daten from safe_to_excel import df spo2_list = df['Red'].tail(SAMPE_ARRAY).astype(float) # Gibt die letzten 100 Werte aus spo2_list.reset_index(drop=True, inplace=True) # Setze den Index zurück index = 0 # Setze den Index auf 0 für den nächsten Durchlauf def update_button_plotter(self): pass def keyPressEvent(self, event): if event.key() == Qt.Key.Key_F5: self.update_button_plotter() else: super().keyPressEvent(event) def einstellungen_klicked(): print("Einstellungen gedrückt") einstellungs_fenster.show() # Annzeigen des Plotter Fensters liveplotterEinstellungen.triggered.connect(einstellungen_klicked) RE: Open a new window does not work - jefsummers - Jun-13-2023 Without going too deep, you do realize that einstellungen_klicked() is not part of your PlotterWindow class? Indentation is wrong if you meant it to be. RE: Open a new window does not work - deanhystad - Jun-13-2023 Try just making the window. import sys from PyQt6 import QtWidgets, uic app = QtWidgets.QApplication(sys.argv) einstellungs_fenster = uic.loadUi("liveplotter_einstellungen.ui") einstellungs_fenster.show() app.exec() RE: Open a new window does not work - Nietzsche - Jun-14-2023 (Jun-13-2023, 11:11 AM)jefsummers Wrote: Without going too deep, you do realize that einstellungen_klicked() is not part of your PlotterWindow class? Indentation is wrong if you meant it to be. Thanks for the info, but this was not the problem. (Jun-13-2023, 02:07 PM)deanhystad Wrote: Try just making the window. This works. import pyqtgraph as pg from PyQt6.QtWidgets import QMainWindow, QDialog from PyQt6 import uic import numpy as np from PySide6.QtGui import Qt import time from PyQt6 import QtWidgets, uic import sys SAMPE_ARRAY = 100 # Laden der UI-Datei für das Einstellung Fenster im Liveplotter uiclass, baseclass = uic.loadUiType("plotter_live_window.ui") # Laden Sie die UI-Datei ui_file2 = "plotter_live_window.ui" ui2 = uic.loadUi(ui_file2) liveplotterEinstellungen = ui2.liveplotterEinstellungen # Laden der UI-Datei für das Einstellung Fenster im Liveplotter einstellungs_fenster = uic.loadUi("liveplotter_einstellungen.ui") class PlotterWindow(QMainWindow, uiclass): def __init__(self, df): super().__init__() self.plot_item = None self.setupUi(self) self.actionAktualisieren.triggered.connect(self.update_button_plotter) self.data = np.random.normal(size=SAMPE_ARRAY) # Beispiel für zufällige Daten self.timer = pg.QtCore.QTimer() self.timer.timeout.connect(self.update_plot_data) self.timer.start(800) # Aktualisierung alle 50 Millisekunden def plot(self, df): self.plot_item = self.graphWidget.plot(self.data, pen='w') # Erstellen des Plot-Items def update_plot_data(self): from safe_to_excel import df spo2_list = df['Red'].tail(SAMPE_ARRAY).astype(float) # Gibt die letzten 100 Werte aus spo2_list.reset_index(drop=True, inplace=True) # Setze den Index zurück index = 0 # Startindex für den Datenabruf while index < SAMPE_ARRAY: data_point = spo2_list[index] # Datenpunkt für den aktuellen Index print(f"Datenpunkt {index + 1}: {data_point}") # Datenpunkt printen self.data = np.roll(self.data, -1) self.data[-1] = data_point self.plot_item.setData(y=self.data) # Aktualisieren der Daten des Plot-Items pg.QtCore.QCoreApplication.processEvents() # Aktualisieren des Plot-Widgets time.sleep(0.017) # Pause von 10 Millisekunden # pg.QtCore.QTimer.singleShot(50, # pg.QtCore.QCoreApplication.instance().quit) # Warten auf Timer-Timeout (50 ms) index += 1 # Nachdem alle 100 Datenpunkte abgearbeitet wurden # Aktualisieren Sie das DataFrame `df` und laden Sie neue Daten from safe_to_excel import df spo2_list = df['Red'].tail(SAMPE_ARRAY).astype(float) # Gibt die letzten 100 Werte aus spo2_list.reset_index(drop=True, inplace=True) # Setze den Index zurück index = 0 # Setze den Index auf 0 für den nächsten Durchlauf def update_button_plotter(self): pass def keyPressEvent(self, event): if event.key() == Qt.Key.Key_F5: self.update_button_plotter() else: super().keyPressEvent(event) def einstellungen_klicked(): print("Einstellungen gedrückt") einstellungs_fenster.show() # Annzeigen des Plotter Fensters liveplotterEinstellungen.triggered.connect(einstellungen_klicked) app = QtWidgets.QApplication(sys.argv) einstellungs_fenster = uic.loadUi("liveplotter_einstellungen.ui") einstellungs_fenster.show() app.exec()Regards RE: Open a new window does not work - Nietzsche - Jun-14-2023 Now i work: In the __init__: self.liveplotterEinstellungen.triggered.connect(self.einstellungen_klicked)and in the window class: def einstellungen_klicked(self): print("Einstellungen gedrückt") einstellungs_fenster.show() # Annzeigen des Plotter Fensters |