这部分的教程将会继续介绍PyQt5的组件。我们这节教程的内容将包括像素图(QPixmap),单行文本框(QLineEdit)和下拉列表框(QComboBox)

像素图(QPixmap)

像素图(QPixmap)是各种用于处理图像的组件中的一个。它是在屏幕上显示图片的最佳选择。在我们代码例子中,我们将使用像素图来在窗口上显示一个图片。

#!/usr/bin/python3
# -*- coding: utf-8 -*-"""
ZetCode PyQt5 tutorial In this example, we dispay an image
on the window. author: Jan Bodnar
website: zetcode.com
last edited: January 2015
"""import sys
from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QLabel, QApplication)
from PyQt5.QtGui import QPixmapclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):      hbox = QHBoxLayout(self)pixmap = QPixmap("redrock.png")lbl = QLabel(self)lbl.setPixmap(pixmap)hbox.addWidget(lbl)self.setLayout(hbox)self.move(300, 200)self.setWindowTitle('Red Rock')self.show()        if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

运行这个例子,我们会把一个图片显示在窗口上。

pixmap = QPixmap("redrock.png")

创建QPixmap对象。该对象构造方法传入一个文件的名字作为参数。

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

我们把像素图对象设置给标签,从而通过标签来显示像素图。

单行文本编辑框(QLineEdit)

单行文本编辑框组件允许输入单行的纯文本数据 。这个组件支持撤销、重做、剪切、粘贴、拖拽、拖动方法。

#!/usr/bin/python3
# -*- coding: utf-8 -*-"""
ZetCode PyQt5 tutorial This example shows text which
is entered in a QLineEdit
in a QLabel widget.author: Jan Bodnar
website: zetcode.com
last edited: January 2015
"""import sys
from PyQt5.QtWidgets import (QWidget, QLabel, QLineEdit, QApplication)class Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):      self.lbl = QLabel(self)qle = QLineEdit(self)qle.move(60, 100)self.lbl.move(60, 40)qle.textChanged[str].connect(self.onChanged)self.setGeometry(300, 300, 280, 170)self.setWindowTitle('QLineEdit')self.show()def onChanged(self, text):self.lbl.setText(text)self.lbl.adjustSize()        if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

这个例子显示了一个单行编辑文本框和一个标签。我们在单行文本编辑框中输入文本时会同步把文本显示在标签中。

qle = QLineEdit(self)

创建单行文本编辑框(QLineEdit)组件。

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

如果单行文本编辑框框内文本被改变,调用onChanged()方法。

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

上面是onChanged()方法的实现,我们设置了标签的显示文本。我们调用了adjustSize()方法来调整标签相对于显示的文本的长度。

Figure: QLineEdit

分割框(QSplitter)

分割框组件让我们通过拖拽分割线来控制子组件的大小。在我们的例子中,我们显示由两个分割框组件约束的三个QFrame组件。

#!/usr/bin/python3
# -*- coding: utf-8 -*-"""
ZetCode PyQt5 tutorial This example shows
how to use QSplitter widget.author: Jan Bodnar
website: zetcode.com
last edited: January 2015
"""import sys
from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame, QSplitter, QStyleFactory, QApplication)
from PyQt5.QtCore import Qtclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):      hbox = QHBoxLayout(self)topleft = QFrame(self)topleft.setFrameShape(QFrame.StyledPanel)topright = QFrame(self)topright.setFrameShape(QFrame.StyledPanel)bottom = QFrame(self)bottom.setFrameShape(QFrame.StyledPanel)splitter1 = QSplitter(Qt.Horizontal)splitter1.addWidget(topleft)splitter1.addWidget(topright)splitter2 = QSplitter(Qt.Vertical)splitter2.addWidget(splitter1)splitter2.addWidget(bottom)hbox.addWidget(splitter2)self.setLayout(hbox)self.setGeometry(300, 300, 300, 200)self.setWindowTitle('QSplitter')self.show()def onChanged(self, text):self.lbl.setText(text)self.lbl.adjustSize()        if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_()) 

在我们的例子中,我们有三个框架组件和两个分割框组件。注意在某些主题下,分割框组件可能不会被显示。

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

我们使用了一个样式框架,为了让框架组件之间的分割线看的明显。

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

我们创建了一个分割框组件并且在这个分割框中添加进入两个框架组件。

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

我们把第一个分割框添加进另一个分割框组件中。

Figure: QSplitter widget

下拉列表框(QComboBox)

下拉列表框组件允许用户从列表中选择一个列表项。

#!/usr/bin/python3
# -*- coding: utf-8 -*-"""
ZetCode PyQt5 tutorial This example shows how to use
a QComboBox widget.author: Jan Bodnar
website: zetcode.com
last edited: January 2015
"""import sys
from PyQt5.QtWidgets import (QWidget, QLabel, QComboBox, QApplication)class Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):      self.lbl = QLabel("Ubuntu", self)combo = QComboBox(self)combo.addItem("Ubuntu")combo.addItem("Mandriva")combo.addItem("Fedora")combo.addItem("Arch")combo.addItem("Gentoo")combo.move(50, 50)self.lbl.move(50, 150)combo.activated[str].connect(self.onActivated)        self.setGeometry(300, 300, 300, 200)self.setWindowTitle('QComboBox')self.show()def onActivated(self, text):self.lbl.setText(text)self.lbl.adjustSize()  if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

例子中显示了一个下拉列表框和一个标签。下拉列表框有五个列表项。这五个列表项都是Linux发行版的名字。标签组件显示在下拉列表框中选中的列表项的文本。

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

我们创建一个下拉列表框并填充了五个列表项。

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

一旦列表项被选中,会调用onActivated()方法。

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

上面的方法,我们把下拉列表框中选中的列表项的文本显示在标签组件上。并且根据标签文本调整了标签大小。

Figure: QComboBox

PyQt的入门教程就到这里结束了,下面该自己上官网了解更多的WIDGET的使用和QT更强大的功能了。

建议有C/C++基础的同学,不妨直接下手QT,很简单的,QT只要大概能写个聊天室或者其他的小软件,基本上PyQt就没问题了,毕竟PyQt的核心还是Qt库。

转载于:https://www.cnblogs.com/archisama/p/5503526.html

PyQt5教程——组件 Ⅱ(八)相关推荐

  1. PyQt5教程——组件(7)

    PyQt5中的组件(widgets) 组件(widgets)是构建一个应用的基础模块.PyQt5有广泛的各式各样的组件,包含按钮,复选按钮,滑块条,和列表框.在这个部分的教程中,我们将学习几种有用的组 ...

  2. pyqt5教程9:Widgets组件

    PyQt5 widgets 小部件是应用程序的基本构建块. PyQt5 有各种各样的小部件,包括按钮.复选框.滑块或列表框.在本教程的这一部分,我们将描述几个有用的小部件:QCheckBox.切换模式 ...

  3. PyQt5教程(八)——实现QQ登录界面(二、加载资源文件)

                                         实现QQ登录界面--加载资源文件 一.创建资源文件: 上篇文章创建了QQ登录界面,本篇介绍创建并加载资源文件. 1.创建资源文 ...

  4. pyqt5教程12:拖放功能

    在 PyQt5 教程的这一部分中,我们将讨论拖放操作. 在计算机图形用户界面中,拖放是单击虚拟对象并将其拖动到不同位置或另一个虚拟对象上的动作(或支持动作).一般来说,它可以用来调用多种动作,或者在两 ...

  5. python PyQt5教程

    引用文章1:python PyQt5 教程 参考文章2:PyQt5 python官方教程 Qt for Python pyqt5-基础 PyQt5是一套来自Digia的Qt5应用框架和Python的粘 ...

  6. NGUI 3.5教程(八)Scroll Bar 滚动条-制作聊天框

    NGUI 3.5教程(八)Scroll Bar 滚动条-制作聊天框 分类: Unity NGUI2014-08-05 18:19 2046人阅读 评论(8) 收藏 举报 NGUI 3.5教程NGUI聊 ...

  7. Vue 教程(十八)template 标签

    Vue 教程(十八)template 标签 template标签 标签必须加 id 使用模板时,需要的中横线 代码实现 <!DOCTYPE html> <html lang=&quo ...

  8. iOS 11开发教程(八)定制iOS11应用程序图标

    iOS 11开发教程(八)定制iOS11应用程序图标 在图1.9中可以看到应用程序的图标是网状白色图像,它是iOS模拟器上的应用程序默认的图标.这个图标是可以进行改变的.以下就来实现在iOS模拟器上将 ...

  9. pyqt5教程6:信号和事件

    PyQt5 中的事件和信号 在 PyQt5 编程教程的这一部分中,我们探讨了应用程序中发生的事件和信号.这部分比较抽象,也最难记忆. 一.PyQt5的事件 GUI 应用程序是事件驱动的.事件主要由应用 ...

最新文章

  1. React使用Styled-Componets来添加样式
  2. 给妹子讲python-S01E19解析Python内嵌作用域与函数闭包
  3. python模拟c的struct
  4. 32和64位系统各内置类型所占字节大小(int char long double 指针等)
  5. XMPP文件传输(XEP-0096协议说明)
  6. Kotlin从入门到放弃(三)——协程
  7. React源码分析 - 组件初次渲染
  8. win10 任务管理器显示GPU占用率
  9. win10 双屏 窗口显示快捷键
  10. CNVD-2020-10487(Tomcat AJP)漏洞
  11. 放弃去FBI的机会,在美做了2年数据研究工作,如今回国创业,他把全球最顶级的智能预测算法带到了国内
  12. 小晴天老师系列——竖式乘法(暴力)
  13. Remote NDIS (RNDIS)
  14. 解决无字幕问题--射手影音VS迅雷影音
  15. Android 打开网页之CustomTabs
  16. 禅卡塔罗;追随它的指引,你会得到更多
  17. 如何解决 bin log 与 redo log 的一致性问题
  18. 出现错误1327!无效驱动器G的解决
  19. 午夜00:37分,与蚊子相伴无眠之夜
  20. [ 热题 HOT 100] ---15.三数之和---排序+双指针

热门文章

  1. 【codeforces 678E】Another Sith Tournament
  2. 模态框到阻止冒泡时间
  3. 面试程序员总结的通病!
  4. NETSTAT日常应用归档
  5. CCF NOI1040 除法游戏
  6. commons-pool2-2.4.2连接池读后笔记
  7. spark spark streaming + kafka receiver方式消费消息
  8. Cling旨在提供一款高性能的C++ REPL
  9. STM32 USB-HID通信移植步骤
  10. 如何解决JSP页面的乱码问题