使用python开发小工具_使用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_())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值