美文网首页
使用pyside2进行python小工具开发

使用pyside2进行python小工具开发

作者: loveyena | 来源:发表于2020-03-07 18:58 被阅读0次

    前面说到python小工具的开发是一件非常有意思的事情。可以用PyQt5、PyQt5-tools的包来实现。但是后来了解到pyside2是python本家开发的包,以后的使用范围和生命周期会更加稳定和有保障,故比较推荐改用pyside2进行开发。之前用PyQt5来开发的同学不必紧张,目前两者只有导入包的区别。改变导入包,即可以轻松从PyQt5转战Pyside2。

    因为pyside2是python自己开发的,未来的使用会更加广泛,可以通过安装pyside2代替PyQt5及PyQt5-tools

    安装方法:pip install pyside2

    使用pyside2的安装命令

    pyinstaller stats2.py --noconsole --hidden-import PySide2.QtXml

    为ui文件时,在入口py文件对ui文件动态加载的方法:

    from PySide2.QtWidgetsimport QApplication, QMessageBox

    from PySide2.QtUiToolsimport QUiLoader

    from PySide2.QtCoreimport QFile

    class Stats:

    def __init__(self):

    # 从文件中加载UI定义(固定写法)

            qfile_stats = QFile("stats.ui")    #如果不在入口文件目录,需要加上路径如ui/stats.ui

    qfile_stats.open(QFile.ReadOnly)

    qfile_stats.close()

    # 从 UI 定义中动态 创建一个相应的窗口对象

            # 注意:里面的控件对象也成为窗口对象的属性了

            # 比如self.ui.button , self.ui.textEdit

            self.ui = QUiLoader().load(qfile_stats)

    self.ui.button.clicked.connect(self.handleCalc)

    ——————————————————————————————

    中间是定义handleCalc行为自己发挥啊啊啊啊啊啊

    ——————————————————————————————

    app = QApplication([])

    stats = Stats()

    stats.ui.show()

    app.exec_()

    将ui转换为py文件后需要加的内容

    import sys #支持下面方法需要导入的包

    中间自己写xxx

    if __name__ =="__main__":

    app = QtWidgets.QApplication(sys.argv)# 创建一个QApplication,也就是你要开发的软件app

        MainWindow = QtWidgets.QMainWindow()# 创建一个QMainWindow,用来装载你需要的各种组件、控件

        ui = Ui_Form()# ui是你创建的ui类的实例化对象

        ui.setupUi(MainWindow)# 执行类中的setupUi方法,方法的参数是第二步中创建的QMainWindow

        MainWindow.show()# 执行QMainWindow的show()方法,显示这个QMainWindow

        sys.exit(app.exec_())# 使用exit()或者点击关闭按钮退出QApplication

    pyside2打包方式

    pyinstaller -F -w bindp.py  注:打出单独的exe文件,要用py文件,用ui文件的单独可执行文件打出后不可用

    pyinstaller stats2.py --noconsole --hidden-import PySide2.QtXml 注:可用ui,打出的是带程序文件的文件夹

    目前实践成功的代码包括以下:

    1.mysql类文件:

    #导入mysql包

    import pymysql  

    #建立mysql连接

    conndev = pymysql.connect(

    host=" ",

    port= ,

    user=' ',

    password=' ',

    database=" ",

    charset=" ",

    #定义数据库操作方法

    def do1(userId, thirdId, ev):

          #给查询语句设置变量

          sql =' '

        #执行查询语句

        try:

            cursor.execute(sql)

            conndev.commit()

            conntest_vpgame.commit()

    except:

            conndev.rollback()

            conntest_vpgame.rollback()

            print(cursor.execute(sql))

    #关闭数据库连接

    cursor.close()# 关闭游标

    conndev.close()# 关闭连接

    conntest_vpgame.close()

    2.ui类文件

    使用Designer工具绘制ui,使用pyuic转换成py文件后,

    #导入资源包

    from PySide2.QtCoreimport (QCoreApplication, QMetaObject, QRect, Qt)

    from PySide2.QtGuiimport (QFont)

    from PySide2.QtWidgetsimport *

    #创建类

    class Ui_Form(QMainWindow):

    def setupUi(self, Form):

    if Form.objectName():

    Form.setObjectName(u"Form")

    Form.resize(848, 469)

    self.label_1 = QLabel(Form)

    中间为ui转换的代码行

    中间为ui转换的代码行

    中间为ui转换的代码行

    中间为ui转换的代码行

    中间为ui转换的代码行

    如果有下拉列表等控件需要添加元素的,需要在转换代码后手动增加,并在以下结构中完善

    def retranslateUi(self, Form):

    Form.setWindowTitle(QCoreApplication.translate("Form", u"\u7405\u740a\u5c0f\u5de5\u5177\u4e4b\u7b2c\u4e09\u65b9\u64cd\u4f5c-yena", None))

    最后增加各种按钮或点击时间的交互,如:

    self.pushButton.clicked.connect(Form.currentdef)

    3.方法类文件

    #导入包

    import sys

    from bind1import Ui_Form

    import MySqlData

    from PySide2.QtWidgetsimport *

    #创建类

    class MainWindow(QMainWindow):

    def __init__(self, parent=None):

    super(MainWindow, self).__init__(parent)

    self.ui = Ui_Form()

    self.ui.setupUi(self)

    中间是自己定义的其他方法,方法中可以调用mysql类的方法进行操作的执行如MySqlData.unbinddib(userId, ev)

    中间是自己定义的其他方法

    中间是自己定义的其他方法

    中间是自己定义的其他方法

    #代码结尾,唤起app且一直循环的获取窗口时间

    if __name__=="__main__":

    app = QApplication(sys.argv)

    win = MainWindow()

    win.show()

    sys.exit(app.exec_())

    相关文章

      网友评论

          本文标题:使用pyside2进行python小工具开发

          本文链接:https://www.haomeiwen.com/subject/jadhdhtx.html