0

我有两个文件 - main.py 和 uploadfile.py。Main.py (GUI) 接受用户输入,并将其提供给 uploadfile.py 进行处理。我from uploadfile import Uploader在 main 中有一个条目,允许 main 与 uploadfile 对话。

我需要进行错误处理,errorfunc如果出现错误,我需要从uploadfile.py 调用驻留在main.py 中的内容(这是为了显示一个带有相关错误的警报窗口)。

主文件

class ErrorHandling (QDialog):
   def __init__(self, ErrorObject):
   QMessageBox.__init__(self)

   def errorfunction(self):
       print("error!")

上传文件.py

class Uploder:
      def __init__(self):

      def uploadfile(self, item1frommain, item2frommain)
          for Files in self.Filestoupload:
              try:
                 self.FileCopy(FilePaths, Metadata)
              except Exception as errno:
                 errorfunction(errno) #<--- placeholder as unsure how to achieve

抱歉,如果此代码不完整,主要和上传文件相当大,无法完整发布。我会很感激知道我会这样做的方式(调用 main 中的类方法/函数)。请注意,尝试from main import ErrorHandling会导致 main 不再运行并出现错误cannot import name Uploader from uploadfile

4

2 回答 2

2

在 uploader.py 顶部添加任何导入语句(main.py)将导致循环导入错误。有两种补救方法。

  1. 移动ErrorHandling到新的 utils.py 模块
  2. except在子句中写入导入语句
try:
  self.FileCopy(FilePaths, Metadata)          
except Exception as errno:
  from main import ErrorHandling
  ErrorHandling(errno)
  ...
  ...
于 2020-05-04T10:40:58.773 回答
1

您可以在构造函数中移交所需的类,例如

class Uploder:
     def __init__(self, errorhandler):
         self.errorhandler = errorhandler()

     def uploadfile(self, item1frommain, item2frommain):
         ...
         self.errorhandler.errorfunction(errno)

并且在main.py

Uploader(ErrorHandling)

备注:上传者拼写正确

于 2020-05-04T10:35:21.653 回答