原文:https://blog.csdn.net/neverstop_2009/article/details/47378779

PyQt5的部件.我们会介绍QPixmap、QLineEdit、QSplitter和QComboBox.

QPixmap

一个QPixmap是一个用于处理图像的部件.它更适合在屏幕上显示图片.在下面的例子中,我们会用QPixmap来在窗口上显示一个图片.

  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. import sys
  4. from PyQt5.QtWidgets import (QWidget, QHBoxLayout,
  5. QLabel, QApplication)
  6. from PyQt5.QtGui import QPixmap
  7. class Example(QWidget):
  8. def __init__(self):
  9. super().__init__()
  10. self.initUI()
  11. def initUI(self):
  12. hbox = QHBoxLayout(self)
  13. pixmap = QPixmap("redrock.png")
  14. lbl = QLabel(self)
  15. lbl.setPixmap(pixmap)
  16. hbox.addWidget(lbl)
  17. self.setLayout(hbox)
  18. self.move(300, 200)
  19. self.setWindowTitle('Red Rock')
  20. self.show()
  21. if __name__ == '__main__':
  22. app = QApplication(sys.argv)
  23. ex = Example()
  24. sys.exit(app.exec_())

在上面的例子中,我们在窗口上显示了一张图片.

pixmap = QPixmap("redrock.png")

我们创建一个QPixmap对象,他用文件名作为参数.

lbl = QLabel(self)
lbl.setPixmap(pixmap)

我们把Pixmap放到QLabel部件里.

QLineEdit

一个QLineEdit是一个允许输入和编辑一行纯文件的部件.部件支持撤销和重做、剪切和剪贴、拖拽功能.

[plain] view plain copy
  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. ZetCode PyQt5 tutorial
  5. This example shows text which
  6. is entered in a QLineEdit
  7. in a QLabel widget.
  8. author: Jan Bodnar
  9. website: zetcode.com
  10. last edited: January 2015
  11. """
  12. import sys
  13. from PyQt5.QtWidgets import (QWidget, QLabel,
  14. QLineEdit, QApplication)
  15. class Example(QWidget):
  16. def __init__(self):
  17. super().__init__()
  18. self.initUI()
  19. def initUI(self):
  20. self.lbl = QLabel(self)
  21. qle = QLineEdit(self)
  22. qle.move(60, 100)
  23. self.lbl.move(60, 40)
  24. qle.textChanged[str].connect(self.onChanged)
  25. self.setGeometry(300, 300, 280, 170)
  26. self.setWindowTitle('QLineEdit')
  27. self.show()
  28. def onChanged(self, text):
  29. self.lbl.setText(text)
  30. self.lbl.adjustSize()
  31. if __name__ == '__main__':
  32. app = QApplication(sys.argv)
  33. ex = Example()
  34. sys.exit(app.exec_())

这个例子我们显示了一个行编辑器和一个标签.我们在行编辑器里输入的文本会立刻在标签中显示.

qle = QLineEdit(self)

创建一个QLineEdit部件.

qle.textChanged[str].connect(self.onChanged)

如果在行编辑器里的文本有变动,我们就调用onChanged()方法.

[plain] view plain copy
  1. def onChanged(self, text):
  2. self.lbl.setText(text)
  3. self.lbl.adjustSize()

在onChanged()方法里,我们设置被输入的文本到标签部件.我们通过调用adjustSize()方法来调整标签的大小到文本的长度.

图片:行编辑器

QSplitter

一个QSplitter可以让用户通过拖拽子部件的边界来控制子部件的大小.在下面的例子中,我们显示三个QFrame部件用两个分割器调整.

[plain] view plain copy
  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. import sys
  4. from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame,
  5. QSplitter, QStyleFactory, QApplication)
  6. from PyQt5.QtCore import Qt
  7. class Example(QWidget):
  8. def __init__(self):
  9. super().__init__()
  10. self.initUI()
  11. def initUI(self):
  12. hbox = QHBoxLayout(self)
  13. topleft = QFrame(self)
  14. topleft.setFrameShape(QFrame.StyledPanel)
  15. topright = QFrame(self)
  16. topright.setFrameShape(QFrame.StyledPanel)
  17. bottom = QFrame(self)
  18. bottom.setFrameShape(QFrame.StyledPanel)
  19. splitter1 = QSplitter(Qt.Horizontal)
  20. splitter1.addWidget(topleft)
  21. splitter1.addWidget(topright)
  22. splitter2 = QSplitter(Qt.Vertical)
  23. splitter2.addWidget(splitter1)
  24. splitter2.addWidget(bottom)
  25. hbox.addWidget(splitter2)
  26. self.setLayout(hbox)
  27. self.setGeometry(300, 300, 300, 200)
  28. self.setWindowTitle('QSplitter')
  29. self.show()
  30. def onChanged(self, text):
  31. self.lbl.setText(text)
  32. self.lbl.adjustSize()
  33. if __name__ == '__main__':
  34. app = QApplication(sys.argv)
  35. ex = Example()
  36. sys.exit(app.exec_())

在这个例子中,有三个框架和两个分割器.请注意,在某些主题下,分割器可能并不会很友好的显示.

topleft = QFrame(self)
topleft.setFrameShape(QFrame.StyledPanel)

我们用一个经典的框架以便可以看清QFrame部件的边界.

splitter1 = QSplitter(Qt.Horizontal)
splitter1.addWidget(topleft)
splitter1.addWidget(topright)

我们创建一个QSplitter部件,把两个框架加到它里面.

splitter2 = QSplitter(Qt.Vertical)
splitter2.addWidget(splitter1)

我们还可以把一个分割器加到另一个分割器部件里.

图片:分割器

QComboBox

QComboBox是一个允许用户从一个选项列表里选择的部件.

[plain] view plain copy
  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. ZetCode PyQt5 tutorial
  5. This example shows how to use
  6. a QComboBox widget.
  7. author: Jan Bodnar
  8. website: zetcode.com
  9. last edited: January 2015
  10. """
  11. import sys
  12. from PyQt5.QtWidgets import (QWidget, QLabel,
  13. QComboBox, QApplication)
  14. class Example(QWidget):
  15. def __init__(self):
  16. super().__init__()
  17. self.initUI()
  18. def initUI(self):
  19. self.lbl = QLabel("Ubuntu", self)
  20. combo = QComboBox(self)
  21. combo.addItem("Ubuntu")
  22. combo.addItem("Mandriva")
  23. combo.addItem("Fedora")
  24. combo.addItem("Arch")
  25. combo.addItem("Gentoo")
  26. combo.move(50, 50)
  27. self.lbl.move(50, 150)
  28. combo.activated[str].connect(self.onActivated)
  29. self.setGeometry(300, 300, 300, 200)
  30. self.setWindowTitle('QComboBox')
  31. self.show()
  32. def onActivated(self, text):
  33. self.lbl.setText(text)
  34. self.lbl.adjustSize()
  35. if __name__ == '__main__':
  36. app = QApplication(sys.argv)
  37. ex = Example()
  38. sys.exit(app.exec_())

例子显示了一个QComboBox和一个标签.下拉列表框是一个有着5个选项的列表.它们是Linux发行版的名字.标签部件显示了从下拉列表框选择的选项.

combo = QComboBox(self)
combo.addItem("Ubuntu")
combo.addItem("Mandriva")
combo.addItem("Fedora")
combo.addItem("Arch")
combo.addItem("Gentoo")

我们创建一个有着5个选项的QComboBox部件.

combo.activated[str].connect(self.onActivated) 

基于选择,我们调用onActivated()方法.

def onActivated(self, text):self.lbl.setText(text)self.lbl.adjustSize() 

在方法里,我们设置被选择的文本到标签部件.我们会调整标签的大小.

图片:下拉列表框

PyQt5初级教程--PyQt5中的部件II[9/13]相关推荐

  1. python PyQt5初级教程hello world

    PyQt5初级教程hello world 本文主要介绍环境的安装和用QT拖控件实现一个简单的hello程序 PyQt5安装 经过我的多次尝试,发现python3.5才能顺利装上PyQt5.安装方法很简 ...

  2. wxpython pyqt_pyqt5教程-教程,PyQt5

    本教程分享:<pyqt5教程>, pyqt5教程 PyQt是一个创建GUI应用程序的工具包.它是Python编程语言和Qt库的成功融合.Qt库是目前最强大的库之一.PyQt是由Phil T ...

  3. PyQt5系列教程(二)利用QtDesigner设计UI界面

    软硬件环境 OS X EI Capitan Python 3.5.1 PyQt 5.5.1 PyCharm 5.0.1 前言 在PyQt5系列教程的第一篇http://blog.csdn.net/dj ...

  4. QT Designer + VS Code + PyQt5 安装教程

    QT Designer + VS Code + PyQt5 安装教程 一.安装环境 二.VS Code安装及配置 1.下载安装包 2.安装软件 3.VS Code基本配置 4.VS Code配置PyQ ...

  5. PyQt5随笔:PyQt5 官方网站文档、一些基础教程网站和书籍推荐

    PyQt5随笔:PyQt5 官方网站文档.一些基础教程网站和书籍推荐 文章目录 PyQt5随笔:PyQt5 官方网站文档.一些基础教程网站和书籍推荐 1. 官方网站文档 2.基础教程网站(点击标题即可 ...

  6. Verilog初级教程(23)Verilog仿真中的显示任务

    文章目录 前言 正文 Display/Write Tasks Verilog Strobes Verilog Continuous Monitors Verilog Format Specifiers ...

  7. Verilog初级教程(21)Verilog中的延迟控制语句

    文章目录 前言 正文 延迟控制语句 事件控制语句 Named Events Event or operator 往期回顾 参考资料及推荐关注 前言 Verilog中的延迟控制有两种类型–延迟和事件表达 ...

  8. Verilog初级教程(20)Verilog中的`ifdef 条件编译语句

    文章目录 前言 正文 语法 示例 Testbench文件 往期回顾 参考资料及推荐关注 前言 `ifdef条件编译语句在逻辑设计中还是很常见的,但也常见一些滥用的情况,这应该避免. 应该在什么情况下使 ...

  9. Verilog初级教程(15)Verilog中的阻塞与非阻塞语句

    文章目录 前言 正文 阻塞赋值 非阻塞赋值 往期回顾 参考资料以及推荐关注 前言 本文通过仿真的方式,形象的说明阻塞赋值以及非阻塞赋值的区别,希望和其他教程相辅相成,共同辅助理解. 正文 阻塞赋值 阻 ...

最新文章

  1. 开源的 6 条社会契约
  2. 可信计算 沈昌祥_沈昌祥院士在南宁开展网络安全前沿知识讲座
  3. SpringBoot中使用thymeleaf的switch来实现if-else if -else的效果
  4. easypoi 多sheet导入_程序员接私活利器 玩转excel导入导出
  5. Https协议基本分析
  6. python计算条件概率_用Python实现贝叶斯定理(附代码)
  7. java lambda sorted_Java8:Lambda表达式增强版Comparator和排序
  8. 大工13秋《计算机文化基础》在线测试1,大工13秋《计算机文化基础》辅导资料六...
  9. mongodb由于目标计算机积极拒绝无法连接失败
  10. linux中U盘用fdisk等命令查询不到
  11. gnome显示桌面图标_「GNOME 3」- 如何显示桌面图标? @20210123
  12. Office 2010 Excel 多窗口同时单独打开多个文件设置教程
  13. 导入百度导航SDK遇到的相关问题
  14. 期货的结算价和收盘价(期货的结算价和收盘价一样吗)
  15. 问卷调查系统环境配置搭建
  16. 怎么在地图上标注自己的店铺
  17. SpringBoot+Vue打造资产出入库管理系统
  18. 针对STM32F4的肉电路问题
  19. 关于 TRTC (实时音视频通话模式)在我司的实践
  20. postman接口测试中文汉化教程

热门文章

  1. python javascript配合,在python部署时组合javascript文件
  2. RYU控制器的学习笔记(一) ryu.app.rest_router的分析
  3. centos 6.8 php mysql_Centos 6.8编译安装LNMP环境(Nginx+MySQL+PHP)教程
  4. java tcp端口复用_windows server tcp端口重用问题
  5. 迁移学习_Java 10迁移建议
  6. 做一个python的旅游系统_有了它,妈妈再也不担心我感冒了,Python使用迭代器进行天气预报...
  7. java动态url_使用url Param的动态主题
  8. 计算机网络训练参考文献,学生实践论文,关于开放教育过程中计算机网络技术专业学生实践能力的培养相关参考文献资料-免费论文范文...
  9. TiDB 在知乎万亿量级业务数据下的实践和挑战
  10. 一行代码,搞定浏览器数据库 IndexedDB