如何打开另一个pyqt gui并从中检索值?

时间:2017-08-19 06:08:13

标签: python python-3.x pyqt5

我正在使用Python 3.6和pyqt5开发文件选择对话框。该对话框的基本思想是它可以选择在预览文件之前进行选择。它可以预览任何类型的已注册Windows文件。设计使用QtDesigner MainWindow完成。 现在我可以从另一个pyqt / python3文件打开这个预览文件浏览器。但是如何从该脚本中检索所选的文件名和文件路径? 这是我打开预览浏览器文件的测试文件:

class TestBrowser(QtWidgets.QMainWindow, design.Ui_MainWindow):
    def __init__(self,browser):
        super(self.__class__, self).__init__()
        self.setupUi(self)  # This is defined in design.py file automatically
        # It sets up layout and widgets that are defined
        self.browser=browser
        self.pushButton.clicked.connect(self.dario)

    def dario(self):
        self.browser.exec_()

def main():
    app = QApplication(sys.argv)
    browser=bd.BrowserDialog()
    main=TestBrowser(browser)
    main.show()
    sys.exit(app.exec_())

if __name__ == '__main__':    # if we're running file directly and not importing it
    main()

1 个答案:

答案 0 :(得分:0)

我个人在不同的.py文件中使用全局变量(出于理智目的),当我遇到“如何从另一个类/函数/某个东西中移动一个值”时,会出现这样的事情。

关于新的.py文件:

file_name = None
file_path = None

# Save function
def save_filename(selected_file, selected_path):
    global file_name, file_path
    file_name = selected_file
    file_path = selected_path

选择文件时,在浏览器中添加:

mynewpyfile.save_filename(file, path)

然后,您可以从主窗口获取文件数据:

self.pushTestbutton.clicked.connect(self.do_something)

def do_something(self):
    print("the selected file is" + mynewpyfile.file_path + "/" + mynewpyfile.file_name)

其他替代方案: http://doc.qt.io/qt-5/qfiledialog.html
在这种方法中,你只需添加一个QlineEdit并且......尽管有限,但这并不容易。

self.lineTest.setText(QtWidgets.QFileDialog.getOpenFileName()[0])