使用pyside2进行python小工具开发

前面说到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小工具开发)