我有两个不同的文件。一个包含GUI代码,另一个包含程序的逻辑。 GUI部分:
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:必须在QWidget 错误之前构造一个QApplication。将from PyQt5.QtWidgets import (QApplication, etc.)
添加到逻辑将无济于事。代码有什么问题?
答案 0 :(得分:1)
注意当您从主程序中prog = gui.Program()
时,logic
模块中import logic
的运行情况
这意味着您创建了一个Program
实例,该实例会在__main__
所以,在你的逻辑模块中:
prog = gui.Program()
addToList()
函数,将Program
实例作为参数,而不是引用全局变量