pyqt5制作一键打开开发工具集的小工具

先用PyQt5的designer设计一个简单的页面

这里写图片描述
在其中我已经加入了信号槽函数

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'tool.ui'
#
# Created by: PyQt5 UI code generator 5.9.1
#
# WARNING! All changes made in this file will be lost!
import win32api
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(600, 201)
        self.setFixedSize(self.width(), self.height())  #禁止调节大小
        self.verticalLayout = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout.setObjectName("verticalLayout")
        self.groupBox = QtWidgets.QGroupBox(Form)
        self.groupBox.setObjectName("groupBox")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.groupBox)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.toollabel1 = QtWidgets.QLabel(self.groupBox)
        self.toollabel1.setObjectName("toollabel1")
        self.gridLayout.addWidget(self.toollabel1, 0, 0, 1, 1)
        self.namelineEdit1 = QtWidgets.QLineEdit(self.groupBox)
        self.namelineEdit1.setObjectName("namelineEdit1")
        self.gridLayout.addWidget(self.namelineEdit1, 0, 1, 1, 2)
        self.pathlineEdit1 = QtWidgets.QLineEdit(self.groupBox)
        self.pathlineEdit1.setObjectName("pathlineEdit1")
        self.gridLayout.addWidget(self.pathlineEdit1, 0, 3, 1, 1)
        self.pushButton = QtWidgets.QPushButton(self.groupBox)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 0, 4, 1, 1)
        #注意如果槽函数带有额外的参数可以使用匿名函数lambda
        self.pushButton.clicked.connect(lambda: self.getpath(self.pathlineEdit1))

        self.toollabel2 = QtWidgets.QLabel(self.groupBox)
        self.toollabel2.setObjectName("toollabel2")
        self.gridLayout.addWidget(self.toollabel2, 1, 0, 1, 1)
        self.namelineEdit2 = QtWidgets.QLineEdit(self.groupBox)
        self.namelineEdit2.setObjectName("namelineEdit2")
        self.gridLayout.addWidget(self.namelineEdit2, 1, 1, 1, 2)
        self.pathlineEdit2 = QtWidgets.QLineEdit(self.groupBox)
        self.pathlineEdit2.setObjectName("pathlineEdit2")
        self.gridLayout.addWidget(self.pathlineEdit2, 1, 3, 1, 1)
        self.pushButton_3 = QtWidgets.QPushButton(self.groupBox)
        self.pushButton_3.setObjectName("pushButton_3")
        self.gridLayout.addWidget(self.pushButton_3, 1, 4, 1, 1)
        self.pushButton_3.clicked.connect(lambda : self.getpath(self.pathlineEdit2))
        self.label = QtWidgets.QLabel(self.groupBox)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 2, 0, 1, 1)
        self.namelineEdit3 = QtWidgets.QLineEdit(self.groupBox)
        self.namelineEdit3.setObjectName("namelineEdit3")
        self.gridLayout.addWidget(self.namelineEdit3, 2, 1, 1, 2)
        self.pathlineEdit3 = QtWidgets.QLineEdit(self.groupBox)
        self.pathlineEdit3.setObjectName("pathlineEdit3")
        self.gridLayout.addWidget(self.pathlineEdit3, 2, 3, 1, 1)
        self.pushButton_4 = QtWidgets.QPushButton(self.groupBox)
        self.pushButton_4.setObjectName("pushButton_4")
        self.gridLayout.addWidget(self.pushButton_4, 2, 4, 1, 1)
        self.pushButton_4.clicked.connect(lambda : self.getpath(self.pathlineEdit3))
        spacerItem = QtWidgets.QSpacerItem(318, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 3, 0, 1, 4)
        self.pushButton_2 = QtWidgets.QPushButton(self.groupBox)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 3, 4, 1, 1)
        self.horizontalLayout.addLayout(self.gridLayout)
        self.verticalLayout.addWidget(self.groupBox)
        self.pushButton_2.clicked.connect(self.getInfo)

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

    def getpath(self, eg):
        path, _ = QFileDialog.getOpenFileName(self, '打开启动文件')
        eg.setText(path)

    def getInfo(self):
        a = {}
        name = self.namelineEdit1.text()
        path = self.pathlineEdit1.text()
        a[name] = path
        name2 = self.namelineEdit2.text()
        path2 = self.pathlineEdit2.text()
        a[name2] = path2
        name3 = self.namelineEdit3.text()
        path3 = self.pathlineEdit3.text()
        a[name3] = path3
        for key in a:
        #
            win32api.ShellExecute(0, 'open', a[key], '', '', 0)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.groupBox.setTitle(_translate("Form", "开发工具集"))
        self.toollabel1.setText(_translate("Form", "工具一:"))
        self.pushButton.setText(_translate("Form", "打开"))
        self.toollabel2.setText(_translate("Form", "工具二:"))
        self.pushButton_3.setText(_translate("Form", "打开"))
        self.label.setText(_translate("Form", "工具三:"))
        self.pushButton_4.setText(_translate("Form", "打开"))
        self.pushButton_2.setText(_translate("Form", "启动"))

我在使用布局的时候使用的是网格布局,这样可以调节每个控件所占用的格数。

主函数

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
import tool

class Main(QWidget, tool.Ui_Form):
    def __init__(self, parent=None):
        super(QWidget, self).__init__(parent)
        self.setupUi(self)
        #
        self.setWindowIcon(QIcon('1.ico'))
        # self.resize(422, 189)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    demo = Main()
    demo.show()
    sys.exit(app.exec())

猜你喜欢

转载自blog.csdn.net/yhflyl/article/details/78837570