簡體   English   中英

如何打開另一個pyqt gui並從中獲取價值?

[英]How to open another pyqt gui and retrieve value from it?

我正在使用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()

當我陷入“如何從另一個類/函數/某物中移動一個值”的問題時,我個人將全局變量用於不同的.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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM