Search code examples
user-interfacepyqtpyqtgraphqcoreapplication

Python GUI QCore.Aplication error


I had tried various workarounds about this problem and tried to fix code according to other examples, but ultimately I had failed to make a workable code. While I do have idea of why it fails, I lack skill to create a workaround about this error. Could you please help me with making this code to work?

The problem:

Then I press ''Duomenų apdorojimas'' and proceed to press ''Pavaizduoti signalą'' I get error saying: QCoreApplication::exec: The event loop is already running. I tried various workarounds about this and some legacy code is left inside my functions. I will tidy and optimize my code later, I just need to know how to work properly with GUI in order to avoid this problem. If needed I will send you entire program with txt files, but this part is essential and here problem arises.

import os
import os.path
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
from tkinter import *
import tkinter.messagebox
import sys
from functools import partial
import matplotlib.pyplot as p

class Window(QtGui.QMainWindow):

def __init__(self):

    super(Window, self).__init__()
    self.setGeometry(50, 50, 500, 300)
    self.setWindowTitle("")
    self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))

    openFile = QtGui.QAction("&Atverkite duomenų failą", self)
    openFile.setShortcut("Ctrl+Q")
    openFile.setStatusTip('Duomenų failas')
    openFile.triggered.connect(self.file_open)

    extractAction = QtGui.QAction("&Duomenys iš Arduino", self)
    extractAction.setShortcut("Ctrl+W")
    extractAction.setStatusTip('Prijunkite iš Arduino ateinančius duomenis')
    extractAction.triggered.connect(self.upload_usb)

    saveFile = QtGui.QAction("&Įšsaugoti failą", self)
    saveFile.setShortcut("Ctrl+E")
    saveFile.setStatusTip('Nurodykite failo direktoriją bei pavadinimą')
    saveFile.triggered.connect(self.file_save)

    quitFile = QtGui.QAction("&Išeiti", self)
    quitFile.setShortcut("Ctrl+R")
    quitFile.setStatusTip('Programa bus uždaryta')
    quitFile.triggered.connect(self.close_application)

    openEditor = QtGui.QAction("&Skaitytuvas", self)
    openEditor.setShortcut("Ctrl+T")
    openEditor.setStatusTip('Skaitytuvas visados įjungtas')
    openEditor.triggered.connect(self.editor)

    additionalData = QtGui.QAction("&Paciento duomenys", self)
    additionalData.setShortcut("Ctrl+A")
    additionalData.setStatusTip('Įveskite paciento amžiaus grupę')
    additionalData.triggered.connect(self.group)

    dataProcessing = QtGui.QAction("&Filtruoti signalą", self)
    dataProcessing.setShortcut("Ctrl+S")
    dataProcessing.setStatusTip('Bus atliekami signalo apdorojimo procesai')
    dataProcessing.triggered.connect(self.editor)

    showGraph = QtGui.QAction("&Pavaizduoti signalą", self)
    showGraph.setShortcut("Ctrl+D")
    showGraph.setStatusTip('Bus atvaizduotas šiuo metu turimas signalas')
    showGraph.triggered.connect(self.close_application)

    mainMenu = self.menuBar()

    fileMenu = mainMenu.addMenu('&Progamos funkcijos')
    fileMenu.addAction(openFile)
    fileMenu.addAction(extractAction)
    fileMenu.addAction(saveFile)
    fileMenu.addAction(quitFile)

    resultsMenu = mainMenu.addMenu("&Duomenų apdorojimas")
    resultsMenu.addAction(dataProcessing)
    resultsMenu.addAction(showGraph)

    editorMenu = mainMenu.addMenu("&Programos nustatymai")
    editorMenu.addAction(openEditor)
    editorMenu.addAction(additionalData)

    self.statusBar()
    self.home()

def openFile(self,n):
    print(n)

def home(self):
    self.show()

def close_application(self):
    graphics()
    sys.exit()

def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())

run()

Solution

  • Well, it turns out that I was trying to open semi-new program in graphics(). I found out how not to create GUI. Thank you for you help, but I have found out solution. For the next time I will post code in onedrive or something in order for people to get whole program with its supporting documents.