1. 程式人生 > 實用技巧 >PyQt5按下按鍵選擇資料夾並顯示

PyQt5按下按鍵選擇資料夾並顯示

問題:使用PyQt5開發桌面程式,實現功能為:按下按鍵,開啟資料夾,選擇資料夾,並將路徑顯示出來。

解決方法

一、主要函式(直接能執行的程式碼見二)

1、選擇資料夾並顯示

    def msg(self,Filepath):
        directory = QtWidgets.QFileDialog.getExistingDirectory(None,"選取資料夾","C:/")  # 起始路徑
        self.fileT.setText(directory)

2、選擇檔案

    def msg(self,Filepath):
        directory = QtWidgets.QFileDialog.getOpenFileName(self,  "選取檔案","./", "All Files (*);;Text Files (*.txt)") 
	#當視窗非繼承QtWidgets.QDialog時,self需替換成 None

3、選擇多個檔案

    def msg(self,Filepath):
        directory = QtWidgets.QFileDialog.getOpenFileNames(self, self, "選取多個檔案", "./","All Files (*);;Text Files (*.txt)") 
	#當視窗非繼承QtWidgets.QDialog時,self需替換成 None

4、設定儲存檔案路徑

    def msg(self,Filepath):
        directory = QtWidgets.QFileDialog.getSaveFileName(self, "設定路徑","./","All Files (*);;Text Files (*.txt)") 
	#當視窗非繼承QtWidgets.QDialog時,self需替換成 None

二、
一個功能為按下按鍵選擇資料夾並顯示路徑的demo。
(從專案裡摘出來的,不太精緻,但執行沒問題)

from PyQt5 import QtCore, QtWidgets
import sys
##########################################
#ui介面設定
class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
    
        #主視窗引數設定
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(848, 721)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        # 設定按鍵引數
        self.file = QtWidgets.QPushButton(self.centralwidget)
        self.file.setGeometry(QtCore.QRect(57, 660, 175, 28))
        self.file.setObjectName("file")
        self.file.setStyleSheet(" margin: 0px; padding: 0px;">)
        self.file.setStyleSheet(
            "QPushButton{ margin: 0px; padding: 0px;">"QPushButton:hover{color:green}"  # 游標移動到上面後的前景色
            "QPushButton{border-radius:6px}"  # 圓角半徑
            "QPushButton:pressed{border: None;}"  # 按下時的樣式
        )

        # 設定顯示視窗引數
        self.fileT = QtWidgets.QPushButton(self.centralwidget)
        self.fileT.setGeometry(QtCore.QRect(300, 660, 480, 28))
        self.fileT.setObjectName("file")
        self.fileT.setStyleSheet(" margin: 0px; padding: 0px;">)
        self.fileT.setStyleSheet(
            "QPushButton{ margin: 0px; padding: 0px;">"QPushButton:hover{color:green}"  # 游標移動到上面後的前景色
            "QPushButton{border-radius:6px}"  # 圓角半徑
            "QPushButton:pressed{border: None;}"  # 按下時的樣式
        )


        #主視窗及選單欄標題欄設定
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 848, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        ################button按鈕點選事件回撥函式################

        self.file.clicked.connect(self.msg)


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Deecamp_Eurus"))
        self.file.setText(_translate("MainWindow", "選擇檔案"))
        self.fileT.setText(_translate("MainWindow", ""))

    #########選擇圖片資料夾#########

    def msg(self,Filepath):
        m = QtWidgets.QFileDialog.getExistingDirectory(None,"選取資料夾","C:/")  # 起始路徑
        self.fileT.setText(m)

#########主函式入口 #########

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)

    mainWindow = QtWidgets.QMainWindow()

    ui = Ui_MainWindow()

    ui.setupUi(mainWindow)

    mainWindow.show()

    sys.exit(app.exec_())

執行效果為:

以上。