PySide2.QtWidgets.QxxxxLayout.addWidget вызывается с неправильными типами аргументов - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь добавить аргумент FigureCanvasQTAgg в качестве виджета к некоторому макету, используя функцию addWidget и произошла ошибка TypeError. Эта ошибка возникает только при попытке запустить мое автономное приложение, созданное с помощью pyinstaller. При непосредственном запуске скрипта все работает хорошо.

Я использую python=3.6, PySide2=5.12.3, pyInstaller=3.4

from PySide2.QtWidgets import QApplication, QMainWindow, QMessageBox, QLineEdit, QComboBox, QWidget
import matplotlib
matplotlib.use("Qt5Agg")
from PySide2.QtCore import Qt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure

class TasksConfigCreatorAdapter(QMainWindow):
    def __init__(self):
        super(TasksConfigCreatorAdapter, self).__init__()
        self.dialog = Ui_TasksConfigCreatorDialog()
        self.dialog.setupUi(self)  
        self.figure = None
        self.setupCanvasLayout()

    def setupCanvasLayout(self):
        if self.figure is None:
            self.figure = plt.figure()
            self.canvas = FigureCanvas(self.figure)
            self.figure.set_facecolor("white")
            self.toolbar = NavigationToolbar(self.canvas, None)
            self.dialog.canvasLayout.addWidget(self.canvas, *(0, 0))
            self.dialog.canvasLayout.addWidget(self.toolbar, *(1, 0))
TypeError: 'PySide2.QtWidgets.QGridLayout.addWidget' called with wrong argument types:
  PySide2.QtWidgets.QGridLayout.addWidget(FigureCanvasQTAgg, int, int)
Supported signatures:
  PySide2.QtWidgets.QGridLayout.addWidget(PySide2.QtWidgets.QWidget, int, int, PySide2.QtCore.Qt.Alignment=Default(Qt.Alignment))
  PySide2.QtWidgets.QGridLayout.addWidget(PySide2.QtWidgets.QWidget, int, int, int, int, PySide2.QtCore.Qt.Alignment=Default(Qt.Alignment))
  PySide2.QtWidgets.QGridLayout.addWidget(PySide2.QtWidgets.QWidget)

1 Ответ

0 голосов
/ 02 июня 2019

Решил эту проблему, добавив модуль PyQt5 в список исключений в файле спецификации.При попытке создать автономный режим в одной папке я обнаружил, что были добавлены PyQt5 файлы, а также PySide2 файлы, которые прерывают работу и приводят к возникновению этой проблемы.

...