【问题标题】:QCoreApplication::exec: The event loop is already running while using qdarkstyle and the python debugger pdb at the same timeQCoreApplication::exec:事件循环已经在运行,同时使用 qdarkstyle 和 python 调试器 pdb
【发布时间】:2021-07-22 20:38:59
【问题描述】:

在这个应用程序中(运行在MacOS 11.2.3上),同时使用qdarkstyle和python调试器pdb,如果我们点击按钮,会出现如下信息:

QCoreApplication::exec: The event loop is already running

如果您注释掉第 6 行和第 65 行,消息就会消失

你知道如何解决这个问题吗?是否有另一个包有深色背景

from PySide2 import QtGui
from PySide2 import QtCore
from PySide2.QtWidgets import QWidget, QApplication, QPushButton, QFileDialog
from PySide2.QtCore import QFile, QTextStream

import qdarkstyle

import sys
import os 
import subprocess
from subprocess import call
import pdb



import matplotlib
import matplotlib.pyplot as plt

try:
    matplotlib.rcParams['backend.qt5'] = 'PySide2'
except (KeyError, Exception):
    pass
matplotlib.use('Qt5Agg')



os.environ['QT_MAC_WANTS_LAYER'] = '1'


from IPython.core import ultratb

sys.excepthook = ultratb.FormattedTB(mode='Verbose', color_scheme='Linux', call_pdb=True)


class GUI(QWidget):
    def __init__(self):
        super(GUI, self).__init__()

        self.initUI()

    def initUI(self):

        height_btn = 40 
        width_btn = 350
        
        button_position_x = 0
        button_position_y = 20 

        button_position_x = button_position_x = 0
        button_position_y = button_position_y + 400
        btn15 = QPushButton('button', self)     
        btn15.clicked.connect(self.Plotfunction)
        btn15.resize(width_btn, height_btn)
        btn15.move(button_position_y, button_position_x)       
        self.show()

    def Plotfunction(self):
        pdb.set_trace()
        print("ok")


def main():

    app = QApplication(sys.argv)
    app.setStyleSheet(qdarkstyle.load_stylesheet())
    ex = GUI()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

【问题讨论】:

    标签: python matplotlib pyside2 pdb


    【解决方案1】:

    qdarkstyle 默认情况下会加载 PyQt5,因此 PySide2 和 PyQt5 之间存在冲突,导致出现意外行为。解决方案是明确指向 qdarkstyle 将使用的后端:

    app.setStyleSheet(qdarkstyle.load_stylesheet(qt_api="pyside2"))
    

    【讨论】:

    • 非常感谢@eyllanesc!你能告诉我在哪里可以找到这些信息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多