У меня есть два разных файла. Один содержит GUI-код, а другой содержит логику программы. ГИП часть:QWidget: должен построить QApplication перед ошибкой QWidget
import sys
from PyQt5 import QtCore
from PyQt5.QtWidgets import (QApplication, QPushButton, QMainWindow, QLabel, QDesktopWidget, QListWidget)
from PyQt5.QtGui import QFont
import logic
class Program(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.first_list = QListWidget(self)
self.first_list.setGeometry(15, 35, 140, 42)
add_to_list_button = QPushButton('Add', self)
add_to_list_button.setGeometry(165, 35, 30, 20)
add_to_list_button.clicked.connect(lambda: logic.addToList(self))
self.second_list = QListWidget(self)
self.second_list.setGeometry(205, 35, 140, 192)
for i in range(30):
self.second_list.addItem(logic.list_one[i][3])
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Program()
sys.exit(app.exec_())
И логика часть:
import gui
# list_one and list_two go here
prog = gui.Program()
def addToList(self):
for i in range(len(prog.second_list)):
if list_one[i][3] == str(prog.second_list.currentItem().text()):
index = i
list_two.append(list_one[index])
Но когда я запускаю программу я получаю QWidget: Должен построить QApplication перед ошибки QWidget. Добавление from PyQt5.QtWidgets import (QApplication, etc.)
к логике не поможет. Что не так с кодом?
FWIW, я думаю, вы создаете много ненужных проблем, пытаясь структурировать свою программу таким образом. Используйте [Qt Designer] (http://doc.qt.io/qt-4.8/designer-manual.html) и [pyuic] (http://pyqt.sourceforge.net/Docs/PyQt5/designer.html), чтобы создать gui, а затем использовать подкласс главного окна для остальной части логики программы. – ekhumoro
Возможный дубликат [PyQt. Получить ошибки, пытаясь отделить GUI от логики] (http://stackoverflow.com/questions/41047671/pyqt-get-errors-trying-to-separate-gui-from-logic) – ImportanceOfBeingErnest
Пользователь задал почти тот же вопрос уже здесь: http://stackoverflow.com/questions/41047671/pyqt-get-errors-trying-to-separate-gui-from-logic Вместо публикации нескольких вопросов попробуйте задать один вопрос или удалить один из них. – ImportanceOfBeingErnest