所以我尝试将 GUI部分与逻辑部分分开,但我无法从 GUI调用逻辑功能部分即可。这是代码的简化版本:
GUI部分
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.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])
逻辑部分
import gui
# list_one and list_two go here
def addToList(self):
for i in range(len(gui.Program.second_list)):
if list_one[i][3] == str(gui.Program.second_list.currentItem().text()):
index = i
list_two.append(list_one[index])
当我运行代码并按下Add按钮时,我得到:
Traceback (most recent call last):
File "/************/gui.py", line 30, in <lambda>
add_to_list_button.clicked.connect(lambda: logic.addToList())
TypeError: addToList() missing 1 required positional argument: 'self'
当我添加自我并按下按钮时,我得到:
add_to_list_button.clicked.connect(lambda: logic.addToList(self))
Traceback (most recent call last):
File "**************/gui.py", line 30, in <lambda>
add_to_list_button.clicked.connect(lambda: logic.addToList(self))
File "**************/logic.py", line 23, in addToList
for i in range(len(gui.Program.second_list)):
AttributeError: type object 'Program' has no attribute 'second_list'
另外我还有很多其他错误,例如&#34;无法找到参考&#39; connect&#39;在&#39;功能&#39;等等#34;。当整个代码在一个文件中时,它工作正常。但我不知道如何正确分开它。很抱歉有很多代码示例。