pyQt5/PySide2 基础入门-创建实例窗口(详细解释)

python 3.7  / Pyside2 (如果使用pyQt5,将Pyside2 直接替换PyQt5即可)

首先我们在Qt Designer中画好界面并自动生成design.py,注意生成后还要部分收到修改,然后创建main.py

design.py 主要负责写软件界面的文件。

main.py 主要负责写业务逻辑的文件。

design.py

# -*- coding: utf-8 -*-
from PySide2.QtCore import QMetaObject,QCoreApplication
from PySide2.QtWidgets import QWidget,QVBoxLayout,QListWidget,QPushButton

# 在Qt Designer中自动生成的代码,但需要部分修改
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(400, 300)
        # 唤醒窗口
        MainWindow.raise_()
        # 必须要手动创建一个总部件,并把子部件加载于此,否则会出现以下报错:
        # QLayout: Attempting to add QLayout "" to WoHeYunApp "MainWindow", which already has a layout
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.centralwidget.resize(400, 300)
        

        self.verticalLayout_2 = QVBoxLayout(self.centralwidget)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.verticalLayout = QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.listWidget = QListWidget(self.centralwidget)
        self.listWidget.setObjectName("listWidget")
        self.verticalLayout.addWidget(self.listWidget)
        self.pushButton = QPushButton(self.centralwidget)
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout.addWidget(self.pushButton)
        self.verticalLayout_2.addLayout(self.verticalLayout)

        self.retranslateUi(self.centralwidget)
        QMetaObject.connectSlotsByName(self.centralwidget)
    
        # 窗口自适应部件
        MainWindow.setCentralWidget(self.centralwidget)

    def retranslateUi(self, MainWindow):
        _translate = QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Pick a folder"))

main.py

# -*- coding: utf-8 -*-
import sys,os
from PySide2.QtWidgets import QMainWindow,QFileDialog,QApplication
from temp.UI import design

# 创建APP类,并继承UI的类
class WoHeYunApp(QMainWindow, design.Ui_MainWindow):
    # 初始化构造函数
    def __init__(self):
        # 继承: super指父类(子类,实例).构造函数
        super(WoHeYunApp, self).__init__()
        self.setupUi(self)
        # 把UI中的控件连接函数功能(事件)
        self.pushButton.clicked.connect(self.browse_folder)

    # 功能函数
    def browse_folder(self):
        # 清除列表内容
        self.listWidget.clear()
        # 创建文件夹选择对话框
        directory = QFileDialog.getExistingDirectory(self,"Pick a folder")
        # 如果有范围的选择路径则搜索该路径下所有存在的文件,并将其名字加载都列表中
        if directory:
            for file_name in os.listdir(directory):
                self.listWidget.addItem(file_name)

# 创建实例
def main():
    # 创建新的实例应用
    app = QApplication(sys.argv)
    # 我们将表单设置为WoHeYunApp
    widgets = WoHeYunApp()
    # 显示我们的表单
    widgets.show()
    # 退出程序
    app.exec_()

# 如果我们直接运行文件而不是导入它,则执行
if __name__ == '__main__':
    main()

https://nikolak.com/pyqt-qt-designer-getting-started/

你可能感兴趣的:(python,pyside2,pyside)