PySide6 文件选择窗口

PySide6 文件选择窗口

PySide6 调用窗口文件

  1. 用Qt Designer绘制窗口界面,生成窗口UI文件,转成python文件。完整代码如下:
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
    QMetaObject, QObject, QPoint, QRect,
    QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QFrame, QHBoxLayout, QLabel,
    QMainWindow, QMenuBar, QPushButton, QSizePolicy,
    QSpacerItem, QStatusBar, QWidget)

class Ui_testFileDialog(object):
    def setupUi(self, testFileDialog):
        if not testFileDialog.objectName():
            testFileDialog.setObjectName(u"testFileDialog")
        testFileDialog.setWindowModality(Qt.WindowModal)
        testFileDialog.resize(793, 204)
        font = QFont()
        font.setPointSize(10)
        testFileDialog.setFont(font)
        testFileDialog.setStyleSheet(u"groupbox {\n"
"border: 0px;\n"
"}")
        self.centralwidget = QWidget(testFileDialog)
        self.centralwidget.setObjectName(u"centralwidget")
        self.pushButton_ClosedWindow = QPushButton(self.centralwidget)
        self.pushButton_ClosedWindow.setObjectName(u"pushButton_ClosedWindow")
        self.pushButton_ClosedWindow.setGeometry(QRect(660, 130, 75, 24))
        self.pushButton_ClosedWindow.setMaximumSize(QSize(80, 16777215))
        self.pushButton_ClosedWindow.setFont(font)
        self.layoutWidget = QWidget(self.centralwidget)
        self.layoutWidget.setObjectName(u"layoutWidget")
        self.layoutWidget.setGeometry(QRect(61, 41, 679, 29))
        self.horizontalLayout_FilePath = QHBoxLayout(self.layoutWidget)
        self.horizontalLayout_FilePath.setObjectName(u"horizontalLayout_FilePath")
        self.horizontalLayout_FilePath.setContentsMargins(0, 0, 0, 0)
        self.label_FileName = QLabel(self.layoutWidget)
        self.label_FileName.setObjectName(u"label_FileName")
        self.label_FileName.setMaximumSize(QSize(80, 16777215))
        self.label_FileName.setFont(font)
        self.label_FileName.setFrameShape(QFrame.Panel)
        self.label_FileName.setFrameShadow(QFrame.Raised)
        self.label_FileName.setTextFormat(Qt.AutoText)
        self.label_FileName.setAlignment(Qt.AlignCenter)
        self.label_FileName.setWordWrap(True)
        self.label_FileName.setMargin(1)

        self.horizontalLayout_FilePath.addWidget(self.label_FileName)

        self.label_FilePath = QLabel(self.layoutWidget)
        self.label_FilePath.setObjectName(u"label_FilePath")
        self.label_FilePath.setFont(font)
        self.label_FilePath.setFrameShape(QFrame.Box)
        self.label_FilePath.setFrameShadow(QFrame.Sunken)

        self.horizontalLayout_FilePath.addWidget(self.label_FilePath)

        self.horizontalSpacer = QSpacerItem(20, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)

        self.horizontalLayout_FilePath.addItem(self.horizontalSpacer)

        self.pushButton_FilePath = QPushButton(self.layoutWidget)
        self.pushButton_FilePath.setObjectName(u"pushButton_FilePath")
        self.pushButton_FilePath.setMaximumSize(QSize(80, 16777215))
        self.pushButton_FilePath.setFont(font)

        self.horizontalLayout_FilePath.addWidget(self.pushButton_FilePath)

        testFileDialog.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(testFileDialog)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 793, 22))
        testFileDialog.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(testFileDialog)
        self.statusbar.setObjectName(u"statusbar")
        testFileDialog.setStatusBar(self.statusbar)

        self.retranslateUi(testFileDialog)

        QMetaObject.connectSlotsByName(testFileDialog)
    # setupUi

    def retranslateUi(self, testFileDialog):
        testFileDialog.setWindowTitle(QCoreApplication.translate("testFileDialog", u"testFileDialog", None))
        self.pushButton_ClosedWindow.setText(QCoreApplication.translate("testFileDialog", u"close", None))
        self.label_FileName.setText(QCoreApplication.translate("testFileDialog", u"File Name", None))
        self.label_FilePath.setText(QCoreApplication.translate("testFileDialog", u"input file", None))
        self.pushButton_FilePath.setText(QCoreApplication.translate("testFileDialog", u"Select File", None))
    # retranslateUi
  1. 调用窗口文件:
    通过如下代码可以调用窗口文件:
from PySide6.QtWidgets import QMainWindow, QApplication
from testFileDialog_ui import Ui_testFileDialog
import sys

class pySideFileDialog(QMainWindow, Ui_testFileDialog):
    def __init__(self, parent = None) -> None:
        super(pySideFileDialog,self).__init__(parent)
        self.setupUi(self)
   
if __name__=='__main__':
    app = QApplication(sys.argv)
    window = pySideFileDialog()
    window.show()
    sys.exit(app.exec_())

PySide6 添加按钮功能

如下图,给按钮’Select File’ 和 ‘close’ 添加功能。
文件选择窗口
在调用窗口代码中添加如下代码:

    def actionUI(self):
        self.pushButton_FilePath.clicked.connect(self.selectFile)
        self.pushButton_ClosedWindow.clicked.connect(self.closeWindow)
    
    def selectFile(self):
        self.selectFilePath = QFileDialog.getOpenFileName(self, "Select File","","python (*.py);;all file (*.*)")[0]
        if self.selectFilePath:
            # get file name with extenseion, only file name, file extension
            self.fileBaseName, self.fileName, self.FileExt = os.path.basename(self.selectFilePath)
            self.fileName, self.FileExt = os.path.splitext(self.fileBaseName)
            self.label_FilePath.setText(self.fileBaseName)
            
    def closeWindow(self):
        QCoreApplication.quit()

如果按钮’Select File’被按下, 函数 selectFile将被调用。通过PySide的文件窗口函数QFileDialog.getOpenFileName,可以实现文件的选择。被选文件名会显示在input file区域。
如果按钮’close’被按下,函数closeWindow将被调用。 主窗口将被关闭。
以下是完整的代码:

from PySide6.QtWidgets import QMainWindow, QApplication, QFileDialog
from PySide6.QtCore import QCoreApplication
from testFileDialog_ui import Ui_testFileDialog
import sys
import os



class pySideFileDialog(QMainWindow, Ui_testFileDialog):
    def __init__(self, parent = None) -> None:
        super(pySideFileDialog,self).__init__(parent)
        self.setupUi(self)
        self.actionUI()
    
    def actionUI(self):
        self.pushButton_FilePath.clicked.connect(self.selectFile)
        self.pushButton_ClosedWindow.clicked.connect(self.closeWindow)
    
    def selectFile(self):
        self.selectFilePath = QFileDialog.getOpenFileName(self, "Select File","","python (*.py);;all file (*.*)")[0]
        if self.selectFilePath:
            # get file name with extenseion, only file name, file extension
            self.fileBaseName, self.fileName, self.FileExt = os.path.basename(self.selectFilePath)
            self.fileName, self.FileExt = os.path.splitext(self.fileBaseName)
            self.label_FilePath.setText(self.fileBaseName)
            
    def closeWindow(self):
        QCoreApplication.quit()
    
    
    
if __name__=='__main__':
    app = QApplication(sys.argv)
    window = pySideFileDialog()
    window.show()
    sys.exit(app.exec_())
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值