Python Forum
Open a new window does not work
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Open a new window does not work
#1
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)                              
Reply
#2
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.
Reply
#3
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()
Reply
#4
(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.
import sys
from PyQt6 import QtWidgets, uic

app = QtWidgets.QApplication(sys.argv)
einstellungs_fenster = uic.loadUi("liveplotter_einstellungen.ui")
einstellungs_fenster.show()
app.exec()

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
Reply
#5
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
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Open files in an existing window instead of new Kostov 2 345 Apr-13-2024, 07:22 AM
Last Post: Kostov
  Is there a way to call and focus any popup window outside of the main window app? Valjean 6 1,824 Oct-02-2023, 04:11 PM
Last Post: deanhystad
  how to open a popup window in tkinter with entry,label and button lunacy90 1 908 Sep-01-2023, 12:07 AM
Last Post: lunacy90
  How does open context manager work? deanhystad 7 1,358 Nov-08-2022, 02:45 PM
Last Post: deanhystad
  Pyspark Window: perform sum over a window with specific conditions Shena76 0 1,191 Jun-13-2022, 08:59 AM
Last Post: Shena76
Sad Selenium: can't open a new window after clicking a button and I don't know why noahverner1995 0 1,994 Jan-22-2022, 09:55 AM
Last Post: noahverner1995
  Help for having the window open jip31 4 3,006 Apr-27-2021, 08:14 AM
Last Post: jip31
  Python win32com.client: What are the syntax to open exe file & activate its window? JaneTan 0 4,229 Oct-14-2020, 09:09 AM
Last Post: JaneTan

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020