使用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_())

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容