2窗口大小 python_PySide2:一个基于强大Qt(ta的亲儿子) 的Python的GUI库初识

本文介绍了PySide2,作为Qt库的Python版本,其优点包括丰富的控件、跨平台支持和完善的文档。文章还提到了替代方案如appJar和EasyGUI,并提供了在深度deepin-linux上安装PySide2的步骤,以及创建基本GUI窗口、调整窗口大小、设置标题和显示图片的示例代码。
摘要由CSDN通过智能技术生成

1 说明:

=====

1.1 PySide2 :这个QT的亲儿子最近(2018年7月)才出生,而且持续有团队在维护。

b1b11ab47c6ae4baa1553d74e474f850.png

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库的介绍、安装、学习》

78061084995e8981526518983d47a11d.png

2 安装:

======

2.1 环境:华为笔记本电脑、深度deepin-linux操作系统、python3.8和微软vscode编辑器。

2.2 安装:

#安装 PySide2pip install pyside2   #官网方法,太慢#本机安装#sudo pip3.8 install pyside2  #太慢#推荐国内源安装#sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple pyside2  
bb0937484cb30f5d0ba2344d41f02ae8.png

最新pyside2和pyqt5都是支持python3.8

2.3 官网:

https://doc.qt.io/qtforpython/index.htmlhttps://wiki.qt.io/Qt_for_Pythonhttps://forum.qt.io/category/58/qt-for-pythonhttps://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, QLabeldef main():    app = QApplication()    label = QLabel("Hello World")    label.show()    app.exec_()                                                    if __name__ == "__main__":    main()
#方法四import sysfrom 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 效果图:

352505dc8a89ab22514d817e7575671a.gif

4 美化上述:

=========

4.1 QLabel的文本的字体大小和颜色:

from PySide2.QtWidgets import QApplication, QLabelapp = QApplication()#文本设置:字体大小和颜色定义label = QLabel("")label.show()app.exec_()

4.2 窗口大小、位置和标题名:

#方法一from PySide2.QtWidgets import QApplication, QWidgetclass 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,QVBoxLayoutfrom PySide2.QtWidgets import QApplication, QLabel,QWidget,QFormLayout,QVBoxLayoutapp = 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('', 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()

效果图:

4c0214db36f7329f5c108b472e1ba1d0.gif

4.3 qml法:

4.3.1 文件夹:1hw下面有2个文件:main.py和mian.qml

f177a701d6c3326bd7e9e00a3a54c6b3.png

4.3.2 main.py代码:

from PySide2.QtWidgets import QApplicationfrom PySide2.QtQml import QQmlApplicationEngineif __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.7import QtQuick.Window 2.3import QtQuick.Controls 2.3ApplicationWindow {    id: _window    // 窗口标题设置    title: "qml显示窗口Helloworld!"    // 窗口大小和位置的设置    width: 800    height: 500    x:300    y:300    // Window默认不可见,需要进行设置为可见    visible: true}

4.3.4 运行效果图:

a06863ef11c70fdb33243d24f08661c8.gif

5 图片显示:

========

5.1 静态图片显示:

from PySide2.QtWidgets import QApplication, QLabelfrom 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_()

效果图:

78d34cc722e0879f318dad8e03d90524.gif

5.2 gif图显示:

from PySide2.QtWidgets import QApplication, QLabelfrom 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_()

效果图:

dbac2f4a32d918cfdc65bdb82d3b392c.gif

====很仔细,初始pyside2===

整理并分享出来,喜欢的就点赞、关注、评论、转发和收藏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值