PySide2一个基于强大Qt(ta的亲儿子)的Python的GUI库初识
1 说明:
=====
1.1 PySide2 :这个QT的亲儿子最近(2018年7月)才出生,而且持续有团队在维护。
1.2 PyQt5:是在PySide2之前的,Qt收的义子 (Riverbank Computing这个公司开发的)。
1.3 Qt库里面有非常强大的图形界面开发库,但是Qt库是C++语言开发的,PySide2、PyQt5可以让我们通过Python语言使用Qt。推荐使用:PySide2。(终于理顺关系了)
1.4 基于Qt 的Python库
1.4.1 优点是控件比较丰富、跨平台体验好、文档完善、用户多。
1.4.2 缺点是 库比较大,发布出来的程序比较大;当然是个好东西,总得介绍介绍。
1.5 大家要开发小工具,界面比较简单,可以采用appJar,EasyGUI,PySimpleGUI,我都有介绍:
《自称是Python中GUI的终极工具:appJar》
《EasyGUI是python的一个超级简单的GUI工具介绍(一)》
《python3的PySimpleGUI库的介绍、安装、学习》
2 安装:
======
2.1 环境:华为笔记本电脑、深度deepin-linux操作系统、python3.8和微软vscode编辑器。
2.2 安装:#安装 PySide2 pip install pyside2 #官网方法,太慢 #本机安装 #sudo pip3.8 install pyside2 #太慢 #推荐国内源安装 #sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple pyside2
最新pyside2和pyqt5都是支持python3.8
2.3 官网:https://doc.qt.io/qtforpython/index.html https://wiki.qt.io/Qt_for_Python https://forum.qt.io/category/58/qt-for-python https://pypi.org/project/PySide2/ #最新版 https://wiki.qt.io/PySide2
2.4 竟然没有github地址:https://github.com/PySide #PySide (deprecated),这个地址指已经弃用了
3 helloworld:最简单的一个GUI窗口开始学习:
====================================
3.1 多种方法的代码:#方法一 from PySide2.QtWidgets import QApplication, QLabel app = QApplication() label = QLabel("Hello World") label.show() app.exec_()#方法二 from PySide2.QtWidgets import QApplication, QLabel if __name__ == "__main__": app = QApplication() label = QLabel("Hello World") label.show() app.exec_()#方法三 from PySide2.QtWidgets import QApplication, QLabel def main(): app = QApplication() label = QLabel("Hello World") label.show() app.exec_() if __name__ == "__main__": main()#方法四 import sys from PySide2.QtWidgets import QApplication, QLabel if __name__ == "__main__": app = QApplication(sys.argv) #python的sys.argv的知识点 label = QLabel("Hello World") label.show() sys.exit(app.exec_())
3.2 python的sys.argv:(引申)
3.2.1 sys.argv[0]表示代码本身文件路径。
3.2.2 sys.argv[ ]其实就是一个列表,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数。
3.3 效果图:
4 美化上述:
=========
4.1 QLabel的文本的字体大小和颜色:from PySide2.QtWidgets import QApplication, QLabel app = QApplication() #文本设置:字体大小和颜色定义 label = QLabel("Hello World!") label.show() app.exec_()
4.2 窗口大小、位置和标题名:#方法一 from PySide2.QtWidgets import QApplication, QWidget class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("中文显示窗口") #窗口位置和大小 self.setGeometry(300,300, 500,400) self.setIcon() #myApp = QApplication(sys.argv) app = QApplication() #与上面相同 window = Window() window.show() app.exec_()#方法二:窗口大小、位置和标题名,带有窗口内容显示文本的 #增加控件:QWidget,QFormLayout,QVBoxLayout from PySide2.QtWidgets import QApplication, QLabel,QWidget,QFormLayout,QVBoxLayout app = QApplication() #自定义Windowti=window title=窗口相关设置:类(python的基础知识) class Windowti(QWidget): #初始化特性 def __init__(self): QWidget.__init__(self) #窗口标题名 self.setWindowTitle("你好世界!HelloWorld!") #支持中文 #self.setMinimumWidth(400) #最小窗口宽度 #窗口大小和位置 #x和y是坐标,左上角坐标为0,0 #w和h是宽和高,即窗口大小 #setGeometry(x: int, y: int, w: int, h: int) self.setGeometry(10,10,500,500) # Create the QVBoxLayout that lays out the whole form self.layout = QVBoxLayout() # Create the form layout that manages the labeled controls self.form_layout = QFormLayout() self.greeting = QLabel("", self) #self.form_layout.addRow("Hello World!", self.greeting) self.form_layout.addRow("Hello World!", self.greeting) # Add the form layout to the main VBox layout self.layout.addLayout(self.form_layout) # Set the VBox layout as the window"s main layout self.setLayout(self.layout) def run(self): # Show the form self.show() # Run the qt application app.exec_() myfirstapp=Windowti() myfirstapp.run()
效果图:
4.3 qml法:
4.3.1 文件夹:1hw下面有2个文件:main.py和mian.qml
4.3.2 main.py代码:from PySide2.QtWidgets import QApplication from PySide2.QtQml import QQmlApplicationEngine if __name__ == "__main__": app = QApplication() #注意main.qml文件的目录和路径 engine = QQmlApplicationEngine("/home/xgj/Desktop/pyside2/1hw/main.qml") app.exec_()
4.3.3 main.qml代码:注意:安装插件:Qt for python,这样qml代码才有高亮。import QtQuick 2.7 import QtQuick.Window 2.3 import QtQuick.Controls 2.3 ApplicationWindow { id: _window // 窗口标题设置 title: "qml显示窗口Helloworld!" // 窗口大小和位置的设置 width: 800 height: 500 x:300 y:300 // Window默认不可见,需要进行设置为可见 visible: true }
4.3.4 运行效果图:
5 图片显示:
========
5.1 静态图片显示:from PySide2.QtWidgets import QApplication, QLabel from PySide2.QtGui import QPixmap #app = QApplication([]) app = QApplication() #等同于上面 Label = QLabel() #指定图片的目录和路径,图片格式:jpeg,jpg,png,ico均可 PixMap = QPixmap("/home/xgj/Desktop/pyside2/20.jpeg") #PixMap = QPixmap("/home/xgj/Desktop/pyside2/18.jpg") #PixMap = QPixmap("/home/xgj/Desktop/pyside2/1231.png") #PixMap = QPixmap("/home/xgj/Desktop/pyside2/1.ico") #PixMap = QPixmap("/home/xgj/Desktop/pyside2/yytd.gif") #显示静态的,不是gif动态的 Label.setPixmap(PixMap) Label.show() app.exec_()
效果图:
5.2 gif图显示:from PySide2.QtWidgets import QApplication, QLabel from PySide2.QtGui import QMovie #app = QApplication([]) app = QApplication() Label = QLabel() #注意不要把这行放到实例化app对象的上面,会无效 #gif因为是动态的,属于movie动画类 Movie = QMovie("/home/xgj/Desktop/pyside2/yytd.gif") #可以 #Movie = QMovie("/home/xgj/Desktop/pyside2/test.mp4") #报错 Label.setMovie(Movie) #这句表示播放动画,不能省略。也不能放到show后面,否则无法自适应大小 Movie.start() Label.show() app.exec_()
效果图:
====很仔细,初始pyside2===
整理并分享出来,喜欢的就点赞、关注、评论、转发和收藏。
科普知识与专注力并行,这本书你值得拥有山上有什么?从小生活在平原内陆的我对这方面也是很缺乏的,而儿子从小就跟我生活在城市里,周围也没什么山,也没什么森林,更不了解山,也不了解山间的动物。如何让孩子了解呢,除了看电视之外
成长中那些怕黑胆小的时刻,别怕,和小银一起成长闺蜜最近很发愁,跟我抱怨,说他家儿子最近变得非常的胆小,做什么都不敢去,晚上去上厕所,也需要她来陪着,明明屋里都开着夜灯呢。以前从来没有这样过,她觉得孩子怎么性格还倒退了呢。男孩子
刘德华的失孤让人心疼,避免灾难的首要是让孩子学会自我保护最近重刷老电影,看了刘德华几年前的一部电影失孤,影片讲述了1998年,雷泽宽两岁的儿子雷达丢了,雷泽宽开始了长达十五年的寻子之路。一路上雷泽宽历经艰辛,还认识了四岁时被拐修车小伙曾
玩到停不下来的游戏认知书,26岁的孩子通吃妈妈群里有人聊天,聊到孩子上幼儿园是选择公立的好还是私立的好。她是这么考虑的公立什么都不教,每天只是让孩子玩,就怕到时候上一年级跟不上。私立的话会教授一些1年级知识,而且有自动幼小
孩子精细运作发育迟缓,你需要找到合适的玩具有宝宝的人肯定都知道,我们在给孩子6个月之后体检的时候,医生会放到桌子上几个积木,让孩子用手抓积木,这是在评估孩子的精细运作。随着孩子的长大,他们的手指灵活能力越来越好,精细运作也
浅析红花,打破思想的桎梏,寻求思想自由渡边淳一是日本著名文学大师国民作家。1933年出生于北海道。毕业于札幌医科大学,一度曾任骨科医生,后弃医从文,专门从事文学创作。一生共发表130多部作品,代表作为失乐园,其中描写的
这是一份给爸爸的陪娃游戏指南游戏是生命的主要元素。罗杰斯与萨依尔有一个爸爸,每天忙于工作,在他看来,他觉得他挣钱养家,是对这个家的责任,是对孩子老婆的一种好。但是事情并没有往他想的方面发展,慢慢的,夫妻关系变
3D镜面绘本镜子里的马戏团和孩子来一场马戏团之旅吧有宝宝的人都会发现一个现象,就是宝宝在5个多月之后,会非常喜欢照镜子,看到镜子里出现的人脸,会很激动,很开心,也有的宝宝看到会哭,但是还是会继续想照镜子。宝宝为什么会这样呢?实际上
看蔡澜随笔集,感受潇洒的人生哲学昨天和朋友聊天,压抑到不行,对生活的不满,对亲朋好友的抱怨,对工作的不满意,对上司不公的反抗,到处透露着难过生气愤怒这些负面情绪。她问我你说我们活在这世上是干什么,每天为了那几斗米
别责怪孩子的恶作剧了,这可是创造力的开端在网上看到一张图片,让我非常震惊。图中父母亲手用大剪刀剪掉了孩子的翅膀,孩子只是无奈地站着,任凭他们剪着自己的翅膀。图上配着一句让我们不得不思考的话你剪掉了我的翅膀,却怪我不会飞翔
给孩子们的人类简历,了解2万年的生命历程儿子4岁了,正经历着性别敏感期,这段时间他总是不停的围着我问妈妈我从哪里来?妈妈你从哪里来的?爸爸又是从哪里来的?这些问题每天都充斥着我的生活。我知道敏感期是孩子成长中的跳板,敏感