QWidget:必须在QWidget之前构造QApplication

2024-04-26 02:34:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同的档案。一个包含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_())

逻辑部分:

^{pr2}$

但是当我运行这个程序时,我得到了QWidget:必须在QWidget错误之前构造一个QApplication。将from PyQt5.QtWidgets import (QApplication, etc.)添加到逻辑中没有帮助。密码怎么了?在


Tags: tofromimportselfaddsysbutton逻辑
1条回答
网友
1楼 · 发布于 2024-04-26 02:34:26

注意,当您从主程序import logic运行时,logic模块中的prog = gui.Program()是如何运行的

这意味着您要创建一个Program实例,在您的__main__中创建QApplication之前创建大量的QWidgets

因此,在您的逻辑模块中:

  • 删除prog = gui.Program()
  • 重新编写addToList()函数,将Program实例作为参数,而不是引用全局变量

相关问题 更多 >