PyQt的。尝试将GUI与逻辑分离时出错

时间:2016-12-08 19:50:23

标签: python pyqt

所以我尝试将 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;。当整个代码在一个文件中时,它工作正常。但我不知道如何正确分开它。很抱歉有很多代码示例。

0 个答案:

没有答案