Ошибка при попытке открыть приложение написанное на PyQt5 и Qt Designer из PySide2
Вообщем я сделал приложение (конвертер валют) на Python и PyQt5 (интерфейс делал в Qt Designer, который взял из PySide2(так как при установке PyQt5 и PyQt5-tools там где должен лежать Qt Designer.exe был не рабочий Qt Designer.dll), так вот, я зделал интерфейс сохранил всё в одну папку (иконки, интерфейс), конвертировал интерфейс из .ui в .py файл, написал код в который имортировал всё что нужно, сделал небольшое дополнение в интерфейс, ещё даже не зделав функцию конвертации (я делал конвертер валют), запускаю, и выходит ошибка! Я проверял всё, вроде должно работать, но не работает, помогите пожалуйста, заранее спасибо)
Вот код:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon
from ui import Ui_MainWindow
from currency_converter import CurrencyConverter
class CurrencyConv(QtWidgets.QMainWindow):
def __init__(self):
super(CurrencyConv, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.init_Ui()
def init_Ui(self):
self.setWindowTitle('Currency Converter')
self.ui.input_currency.setPlaceholderText('Из валюты:')
self.ui.input_amout.setPlaceholderText('Сколько у меня есть:')
self.ui.output_currency.setPlaceholderText('В валюту: ')
self.ui.output_amout.setPlaceholderText('Сколько я получу:')
app = QtWidgets.QApplication([])
application = CurrencyConv()
application.show()
sys.exit(app.exec())
А вот ошибка:
Traceback (most recent call last):
File "main.py", line 24, in <module>
application = CurrencyConv()
File "main.py", line 10, in __init__
super(CurrencyConv(), self).__init__()
File "main.py", line 10, in __init__
super(CurrencyConv(), self).__init__()
File "main.py", line 10, in __init__
super(CurrencyConv(), self).__init__()
[Previous line repeated 496 more times]
RecursionError: maximum recursion depth exceeded
Ответы (2 шт):
У вас ошибка из-за рекурсивного вызов конструктора самого себя
Замените
super(CurrencyConv, self).__init__()
на
super(QtWidgets.QMainWindow, self).__init__()
а лучше вовсе не указывать тип предка:
super().__init__()
Мне кажется, что вы в каком-то из модулей вставили лишний или не нужный импорт.
main.py
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon
from q1207374_ui import Ui_MainWindow
#? from currency_converter import CurrencyConverter
class CurrencyConv(QtWidgets.QMainWindow):
def __init__(self):
super(CurrencyConv, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.init_Ui()
def init_Ui(self):
self.setWindowTitle('Currency Converter')
self.ui.input_currency.setPlaceholderText('Из валюты:')
self.ui.input_amout.setPlaceholderText('Сколько у меня есть:')
self.ui.output_currency.setPlaceholderText('В валюту: ')
self.ui.output_amout.setPlaceholderText('Сколько я получу:')
app = QtWidgets.QApplication([])
application = CurrencyConv()
application.show()
sys.exit(app.exec())
q1207374_ui.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(265, 320)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.input_currency = QtWidgets.QLineEdit(self.centralwidget)
self.input_currency.setGeometry(QtCore.QRect(70, 30, 113, 20))
self.input_currency.setObjectName("input_currency")
self.input_amout = QtWidgets.QLineEdit(self.centralwidget)
self.input_amout.setGeometry(QtCore.QRect(70, 70, 113, 20))
self.input_amout.setObjectName("input_amout")
self.output_currency = QtWidgets.QLineEdit(self.centralwidget)
self.output_currency.setGeometry(QtCore.QRect(70, 120, 113, 20))
self.output_currency.setObjectName("output_currency")
self.output_amout = QtWidgets.QLineEdit(self.centralwidget)
self.output_amout.setGeometry(QtCore.QRect(70, 170, 113, 20))
self.output_amout.setObjectName("output_amout")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 265, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
