运行 python 从 qt creator 导出并使用 pyqt5 转换为 python 的代码

Running python code exported from qt creator and converted to python using pyqt5

我最近在尝试 运行 我的 python 脚本后遇到了这个错误。简而言之,我根本不明白我是如何提出三个论点的。我已经包含了我认为最相关的代码片段。非常感谢帮助。谢谢你。

Traceback (most recent call last): File "DESeq_rpkm_gui.py", line 946, in disp = Ui_MainWindow() File "DESeq_rpkm_gui.py", line 21, in init self.setupUi(self,QMainWindow) TypeError: setupUi() takes exactly 2 arguments (3 given)

    class Ui_MainWindow(QMainWindow):
        def __init__(self,parent=None):
            QMainWindow.__init__(self,parent)
            self.setupUi(self,QMainWindow)

        def setupUi(self,MainWindow):

            if __name__=='__main__':
                app = QApplication(sys.argv)
                disp = Ui_MainWindow()
                disp.show()
                sys.exit(disp.exec_()) 

当您将方法调用为 object.method(argument1, ...) 时,object 将作为第一个参数隐式传递给该方法。

因此,对于您当前的代码,行 self.setupUi(self,QMainWindow) 实际上将三个参数传递给方法 setupUi。它们是 selfself(再次)和 QMainWindow

您可能想阅读此内容:What is the purpose of self?

现在,您可能对此感到困惑,因为 PyQt 在 call/use setupUi 方法的方式上有点非正统。文档是here供大家参考,但总之,他们希望你调用self.setupUi(self)

这样您就可以使用 setupUi 方法在您传入的任何小部件(甚至多个小部件!)中创建您的 UI。这在文档的第一个示例中进行了解释:

import sys
from PyQt4.QtGui import QApplication, QDialog
from ui_imagedialog import Ui_ImageDialog

app = QApplication(sys.argv)
window = QDialog()
ui = Ui_ImageDialog()
ui.setupUi(window)

window.show()
sys.exit(app.exec_())

您正在使用我认为更传统的方法,并从您的 __init__ 方法中调用 setupUi。这在他们的文档中的第二个示例中有所介绍,应该按照我上面概述的方式调用。