Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 浏览文件并在其他文件中使用其路径_Python_Oop_Pyqt5_Python Object - Fatal编程技术网

Python 浏览文件并在其他文件中使用其路径

Python 浏览文件并在其他文件中使用其路径,python,oop,pyqt5,python-object,Python,Oop,Pyqt5,Python Object,我的PyQt5有点问题。我试图创建一个程序来浏览一个文件,当找到一个文件时,它会将路径保存在内存中,当我按下一个按钮时,它会使用browse中的路径运行另一个.py文件。以下是我到目前为止所能做的 File1.py from PyQt5 import QtCore, QtGui, QtWidgets class Ui_DE(object): def setupUi(self, DE): DE.setObjectName("DE") DE.res

我的PyQt5有点问题。我试图创建一个程序来浏览一个文件,当找到一个文件时,它会将路径保存在内存中,当我按下一个按钮时,它会使用browse中的路径运行另一个.py文件。以下是我到目前为止所能做的

File1.py

    from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_DE(object):
    def setupUi(self, DE):
        DE.setObjectName("DE")
        DE.resize(1149, 517)
        font = QtGui.QFont()
        font.setPointSize(10)
        DE.setFont(font)

        # The "browse" button
        self.GermanyBrowse = QtWidgets.QPushButton(DE)
        self.GermanyBrowse.setGeometry(QtCore.QRect(240, 60, 91, 21))
        self.GermanyBrowse.setObjectName("GermanyBrowse")
        self.GermanyBrowse.clicked.connect(self.getfile)

        # The run button
        self.Run = QtWidgets.QPushButton(DE)
        self.Run.setGeometry(QtCore.QRect(500, 460, 156, 23))
        self.Run.setObjectName("Run")
        self.Run.clicked.connect(self.runFile())


        self.retranslateUi(DE)

    def retranslateUi(self, DE):
        _translate = QtCore.QCoreApplication.translate
        DE.setWindowTitle(_translate("DE", "Title"))
        self.Run.setText(_translate("DE", "Run"))
        self.GermanyBrowse.setText(_translate("DE", "Browse"))

    def getfile(self):
        fileName, _ = QtWidgets.QFileDialog.getOpenFileName(
            None,
            "Select file",
            "",
            "*.xlsx", )
        return fileName

    def runFile(self):
        import File2.py
        file2.name_of_file()


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    DE = QtWidgets.QDialog()
    ui = Ui_DE()
    ui.setupUi(DE)
    DE.show()
    sys.exit(app.exec_())
File2.py

import File1

x = File1.Ui_DE.getfile(GermanyBrowse)


def name_of_file(str):
    alert = QtWidgets.QMessageBox()
    alert.setText(f"You have opnened {str}")
    alert.exec_()
“NameError:name'GermanyBrowse'未定义”-这是我运行File2.py时得到的结果

我的问题是,如何将“self.GermanyBrowse.clicked.connect(self.getfile)”中的路径作为字符串从File1.py调用为File2.py

谢谢!

试试看:

file1.py

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_DE(object):
    def setupUi(self, DE):
        DE.setObjectName("DE")
        DE.resize(1149, 517)
        font = QtGui.QFont()
        font.setPointSize(10)
        DE.setFont(font)

        # The "browse" button
        self.GermanyBrowse = QtWidgets.QPushButton(DE)
        self.GermanyBrowse.setGeometry(QtCore.QRect(240, 60, 91, 21))
        self.GermanyBrowse.setObjectName("GermanyBrowse")
        self.GermanyBrowse.clicked.connect(self.getfile)

        # The run button
        self.Run = QtWidgets.QPushButton(DE)
        self.Run.setGeometry(QtCore.QRect(500, 460, 156, 23))
        self.Run.setObjectName("Run")
        self.Run.clicked.connect(self.runFile)  # - ()

        self.retranslateUi(DE)

    def retranslateUi(self, DE):
        _translate = QtCore.QCoreApplication.translate
        DE.setWindowTitle(_translate("DE", "Title"))
        self.Run.setText(_translate("DE", "Run"))
        self.GermanyBrowse.setText(_translate("DE", "Browse"))

    def getfile(self):
        fileName, _ = QtWidgets.QFileDialog.getOpenFileName(
            None,
            "Select file",
            "",
            "*.xlsx", )
        return fileName

    def runFile(self):
        import file2                                      # --- File2.py
        file2.name_of_file(file2.x)                       # +++ (file2.x)

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    DE = QtWidgets.QDialog()
    ui = Ui_DE()
    ui.setupUi(DE)
    DE.show()
    sys.exit(app.exec_())
file2.py

from PyQt5 import QtWidgets                               # +++
import file1                                              # - DailyMCI, + file1

#x = DailyMCI.Ui_DE.getfile(GermanyBrowse)                # ---
x = file1.Ui_DE.getfile(file1.Ui_DE)                      # +++

def name_of_file(str):
    alert = QtWidgets.QMessageBox()
    alert.setText("You have opnened {str}".format(str=str)) # I have python 3.5 (f"You have opnened {str}")
    alert.exec_()

非常感谢您的回答。这很有意义,应该可以工作,但每当我按“运行”时,就会出现以下错误:退出代码为-1073740791(0xC0000409)的进程结束。我以前从未见过类似的情况。非常感谢!这是我的输入错误。它现在可以工作了!谢谢!