【发布时间】:2021-01-23 23:28:14
【问题描述】:
目的
我编写了 2 个运行良好的程序。现在,我想为这两个程序创建一个 GUI。我的想法是创建一个窗口,在其中选择要运行的软件,然后根据您单击的内容,将打开一个新窗口。该窗口将用于询问用户我在执行这两个软件之前手动输入的输入。然后,在这个新窗口中,用户将单击一个按钮,软件将使用用户介绍的参数加载。
软件将使用 Qt5 和 python 3 运行。
我如何进行
我使用 Qt Designer 创建了 3 个文件。一个是主窗口(main.py,它创建了一个名为 frame_init 的窗口),当用户单击一个按钮时,它会打开第二个窗口。如果它是第一个或第二个软件,则第二个窗口是不同的。例如,要打开软件 1,我有:
def open_software_first(self):
self.software_first = QtWidgets.QMainWindow()
self.ui = Ui_software_first()
self.ui.setupUi(self.software_first)
self.software_first.show() #the file is called first.py
frame_init.hide()
在 first.py 中有一个按钮,用户可以按下它来启动一切:
import A.main as start_functions
def start_first_software(self):
self.btn_start.setEnabled(False)
start_functions.start(values) #values are different properties from checkbox, inputlines...
在这里,我所做的是将 3 个文件放在一个文件夹中。创建两个文件夹(A 用于软件 1,B 用于软件 2)并将每个软件的文件放在其自己的文件夹中。这就是导入有这个 A 的原因。在所有文件夹中,我放置了一个名为“__ init__.py”的空文件。最初,我运行打开 frame_init 的软件。对于此处注释的文件,结构为:
application
├── __init__.py
├── main.py
├── first.py
├── second.py
├── A
└── __init__.py
└── main.py
└── AAAAAA.py
└── BBBBBB.py
└── ...
├── B
└── __init__.py
└── ...
问题
如何导入必须在 A 文件夹中软件 1 的主目录中?要在我使用的 main 中的其他文件中导入函数:
import AAAAA as a
import BBBBB as b
等等。现在,它不起作用。我不得不说:
import A.AAAAA as a
import A.BBBBB as b
所以它就像从加载 GUI 的文件夹中导入一样。问题是,例如,在文件 AAAAA 中,我有一个到 BBBBB 的导入:
import BBBBB as b
在 BBBBB 文件中我需要 AAAAA:
import AAAAA as a
main 加载“import A.AAAAA as a”。然后它调用 AAAAA 中的一个函数。此函数使用 BBBBB 中的函数。现在加载 BBBBB 中的函数时出现错误:
“ModuleNotFoundError:没有名为‘AAAAA’的模块”。如果我输入 A.AAAAA 那么它会说:“AttributeError:模块'A'没有属性'AAAAA'”
如何加载此导入?很抱歉没有在这里发布一个可行的例子,但如果我把所有东西都放在这里,我的事情就太乱了......
【问题讨论】:
-
该问题与 Qt 或 PyQt5 无关,因为如果您使用其他库,问题将是相同的。最好使用涉及问题的技术的标签