zoukankan      html  css  js  c++  java
  • GUI学习之一——PyQt5初识

    我们在第〇篇里先演示了GUI的功能,其实Python有多个库是支持GUI编程的,python官网列出了大量的说明,其中包括了原生的tkinter

    还有许多第三方库

    Pyqt

    PySide

    wxPython

    PyGUI

    Kivy.....等等

    选库标准

    首先,我们要明白,对任意一个库来说,都是没有最好的,只由最合适的,所以我们要结合这几点来来选择最适合自己的库:

    1.简单好用

    2.功能强大

    3文档齐全,方便查询

    4.性能强劲

    5.稳定性高

    6.生态支持

    7.跨平台支持

    8.开源免费.

    除了上述的几点外,还有两点非常重要

    可以看看软件版本和最近的更新时间,尽可能避开最小的版本号的和很久没有更新的,因为版本号太小是刚出的,有可能很多BUG都没有暴露出来,而太久没有更新的已经没有技术支持了,在大型的项目里一旦出了问题太难维护。

    基于以上标准对比,我选择了PyQt5。

    什么是PyQt?

    PyQt本质上还是Qt,是一个用C++写的一个跨平台的GUI开发框架。而PyQt是Qt用Python进行了绑定,在保留原有的API时实现了原有的所有功能。所以一旦掌握了PyQt后再掌握了C++的基本语法可快速接受Qt的使用。

    而现在使用的PyQt5,是Python对Qt5.x版本的绑定,完美的支持了Python3.x。

    GUI编程要学习什么?

    1.各种控件的特性和使用 

    2.控件的样式

    3.资源的加载

    4.控件的布局

    5.事件和信号

    6.动画特效

    7.界面跳转

    8.设计工具的使用

    9.额外的东西

    我们把设计工具放在最后,就是在学会代码的时候利用QtDesigner之类的工具优化我们的编程流程,就是为了防止我们先会用设计工具忽略代码的方法。

    PyQt5库结构

    QtWidgets包含了一整套UI元素,用于建立符合系统风格的界面

    QtGui 涵盖了多种基本图形功能的类:字体、图形、图标、颜色等

    QtCore 涵盖了包的核心非GUI功能:时间、文件、目录、数据类型、文本流、连接、线程进程等

    这三个是最长用的类,后面的我们以后有时间再讲

    还有一个模块:Qt,是把所有的类综合到一个模块里。好处就是不用关心哪个模块里有哪些类,但是由于加载了所有的类,比较吃内存,适合新手学习时候使用。

    下面用一个最简单的代码分析一下PyQt5程序基本结构

    from PyQt5.Qt import *
    import sys
    app= QApplication(sys.argv)
    
    window = QWidget()
    window.setWindowTitle('first GUI')
    window.resize(500,500)#窗口大小
    window.move(0,0)#窗口位置
    
    lable = QLabel(window)
    lable.setText('Hello World!')
    lable.move(200,200)
    
    window.show()
    sys.exit(app.exec_())
    First_GUI
    from PyQt5.Qt import *
    import sys   #导入模块
    app = QApplication(sys.argv)#创建应用程序
    window = QWidget()
    
    window.show()#控件操作
    
    sys.exit(app.exec_())#开始执行应用程序并进入消息循环(无限循环)

     注意通过app.exec_(),启动了一个无限循环,在这个循环里不断监听和用户的交互信息。

    在控件操作的时候,常规方式就是先建立一个界面的父控件,再针对这个父控件建立按钮、标签等控件,完成后调用父控件的显示功能。

  • 相关阅读:
    百度&高德地图小区景点边界轮廓实现
    使用Hexo & Github,搭建属于自己的博客
    网页背景图固定不动,不跟随滚动条滚动
    jQuery同步Ajax带来的UI线程阻塞问题及解决方法
    Java并发编程实战(5)- 线程生命周期
    Java并发编程实战(4)- 死锁
    Java并发编程实战(3)- 互斥锁
    Java并发编程实战(2)- Java内存模型
    Java并发编程实战(1)- 并发程序的bug源头
    软件测试待解决问题
  • 原文地址:https://www.cnblogs.com/yinsedeyinse/p/10584974.html
Copyright © 2011-2022 走看看