• 售前

  • 售后

热门帖子
入门百科

PyQt5学习条记-步伐结构分析

[复制链接]
蓝胖子685 显示全部楼层 发表于 2022-1-16 11:35:16 |阅读模式 打印 上一主题 下一主题
PyQt5学习条记-步伐布局分析



一、简单先容一些控件

官方文档:’’‘https://doc.qt.io/qtforpython/modules.html’’’


  • QtWidgets:包罗一整套UI元素控件,用于创建符合体系风格的界面
  • QtGui:涵盖了多种根本图形功能的类,比如:字体,图形,图标,颜色
  • QtCore:涵盖了包的核心的非GUI功能,比如:时间,文件,目次,数据范例,链接,线程历程
  • QtWebKit:欣赏器引擎
  • QtTest:测试
  • QtSql:数据库
  • QtMultimedia和QtMultimediaWidgets:多媒体
  • Qt: 将根本全部模块中的类综合到一个单一的模块中,长处是不消关心哪一个模块包罗哪些类,弊端是占用内存
二、步伐简单分析

  1. from PyQt5.QtWidgets import QLabel,QPushButton
  2. from PyQt5.QtGui import QIcon
复制代码
  1. from PyQt5.Qt import *
  2. import sys
  3. # 创建一个应用程序对象,并且传入参数
  4. app = QApplication(sys.argv)
  5. # 创建控件
  6. # 当我们创建一个控件之后,如果说,这个控件没有父控件,则把他当作顶层控件(窗口)
  7. # 系统会自动的给窗口添加一些修饰(标题栏),窗口控件具备一些特性(设置标题,图标)
  8. window = QWidget()
  9. # 设置控件(大小,位置,样式...)
  10. window.setWindowTitle("社会我顺哥,人狠话不多") # 设置的是父控件的标题栏  必须是顶层控件
  11. # 设置大小
  12. window.resize(500,500)
  13. window.move(400,200)
  14. # 创建QLabel控件,作为子控件,父控件可以作为子控件的容器
  15. # 这里的Label是子控件  就不可以设置标题 setWindowTitle()
  16. label = QLabel(window)  # 添加父控件
  17. label.setText("你好 世界")
  18. # 移动标签
  19. label.move(200,200)
  20. # 展示控件,刚创建好一个控件之后,(这个控件没有什么父控件),默认情况下不会被展示,只有手动的调用show()才可以
  21. # 如果说这个控件,有父控件的,那么一般情况下,父控件展示之后,子控件会自动展示
  22. window.show()
  23. # 应用程序的执行,进入到消息循环
  24. # 让整个程序开始执行,并且进入到消息循环
  25. # 监测整个程序所接受到的用户的交互信息
  26. sys.exit(app.exec_())
复制代码
结果图:

步伐的布局图:

总结:


  • 一个PyQt步伐都必要一个应用步伐对象,它包罗主变乱循环,在此中来自窗口体系和别的资源的所偶尔间被处理处罚和调理。
  • 他也处理处罚应用步伐的初始化和竣事,而且提供对话管理
  • 他也处理处罚绝大多数体系范围的设置
  • app.exec()意思是让步伐进入主循环,不要克制
  • 一个没有父对象控件默认不表现,必须要调用show()才可以
  • 一个应用步伐中可以表现多个顶级控件:

    • 假如一个Widget没有父控件,则认定是顶级控件(顶级窗口)
    • 假如想要一个控件展示在别的一个控件内部,必须要有父子关系
    • 假如两个对象为父子关系,那么父对象表现之后,一样平常子对象会自动表现

假如一个控件他没有父控件,那么就可以单独设置标题:
  1. label = QLabel()
  2. label.setText("XXX")  # 为标签设置文本内容
  3. label.setWindowTitle("xxxxxxxx") # 设置标题
  4. label.show()
复制代码
三、运动模板设置

打开设置,输入live 选择Live Templates 然后点击右边的加号 选择 Live Templates


四、面向对象版本

假如将全部的控件操纵包装成一个类,那么,代码如下界说:
  1. # 创建一个窗口类,继承QWidget(本身就是一个顶级类)
  2. class Window(QWidget):
  3.     # 初始化方法
  4.     def __init__(self):
  5.         # 查看QWidget的定义,可以看到他的初始化有许多的参数
  6.         # 这里需要在Window子类初始化之前 先初始化QWidget  调用super方法
  7.         super().__init__()
  8.         print("xxx")
复制代码
  1. # Qt中包含一些基本的模块
  2. from PyQt5.Qt import *
  3. import sys
  4. # 执行的方式:右击运行    命令行:python  代码名称
  5. # 当别人通过命令行启动这个程序的时候,可以设定一种功能(接受命令行传递的参数,来执行不同的逻辑,也就是代码中有好几个if else,用0 1 2 3选择执行哪一个代码块)
  6. # 参数0 表示当前项目的路径
  7. class Window(QWidget):
  8.     def __init__(self):
  9.         super().__init__()
  10.         self.setWindowTitle("学习PyQt")
  11.         self.resize(500,500)
  12.         label = QLabel(self)
  13.         label.setText("xxx")
  14. app = QApplication(sys.argv)
  15. window = Window()
  16. # window.setWindowTitle("社会我顺哥,人狠话不多")
  17. # window.resize(500,500)
  18. # label = QLabel(window)
  19. # label.setText("你好 世界")
  20. # label.move(200,200)
  21. window.show()
  22. sys.exit(app.exec_())
复制代码

但是,实际中的开辟工作会有许多子控件,不大概将全部的子控件全部添加到init()方法中,以是可以做出如下更改,是的代码布局更加清晰,每一个子控件单独作为一个方法,而init()方法中只生存顶级控件QWidget(),以是必要在init()方法中调用其他控件。
  1. class Window(QWidget):
  2.     def __init__(self):
  3.         # 调用父类QWidget的初始化方法
  4.         super().__init()
  5.         # 设置总体的窗口控件,顶级控件
  6.         self.setWindowTitle("PyQt5学习笔记")
  7.         self.resize(500,500)
  8.         # 然后你再去调用一些 子控件的函数
  9.         self.setup_ui()
  10.     def setup_ui(self):
  11.         label = QLabel(self)
  12.         label.setText("xxx")
  13.    
复制代码
可以将上面的封装的类作为一个单独的类,然后将该文件作为导入模块,可维护性非常好,同时 可以在这个模块下面添加如下代码,方便测试
  1. if __name__ == '__main__':
  2.     import sys  # 导入系统模块
  3.      app = QApplication(sys.argv)
  4.      window = Window()
  5.      window.show()
  6.      sys.exit(app.exec_())
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作