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

原文:https://blog.youkuaiyun.com/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.   
  8.   
  9. class Example(QWidget):  
  10.       
  11.     def __init__(self):  
  12.         super().__init__()  
  13.           
  14.         self.initUI()  
  15.           
  16.           
  17.     def initUI(self):        
  18.   
  19.         hbox = QHBoxLayout(self)  
  20.         pixmap = QPixmap("redrock.png")  
  21.   
  22.         lbl = QLabel(self)  
  23.         lbl.setPixmap(pixmap)  
  24.   
  25.         hbox.addWidget(lbl)  
  26.         self.setLayout(hbox)  
  27.           
  28.         self.move(300, 200)  
  29.         self.setWindowTitle('Red Rock')  
  30.         self.show()          
  31.           
  32.           
  33. if __name__ == '__main__':  
  34.       
  35.     app = QApplication(sys.argv)  
  36.     ex = Example()  
  37.     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. """  
  5. ZetCode PyQt5 tutorial   
  6.   
  7. This example shows text which   
  8. is entered in a QLineEdit  
  9. in a QLabel widget.  
  10.    
  11. author: Jan Bodnar  
  12. website: zetcode.com   
  13. last edited: January 2015  
  14. """  
  15.   
  16. import sys  
  17. from PyQt5.QtWidgets import (QWidget, QLabel,   
  18.     QLineEdit, QApplication)  
  19.   
  20.   
  21. class Example(QWidget):  
  22.       
  23.     def __init__(self):  
  24.         super().__init__()  
  25.           
  26.         self.initUI()  
  27.           
  28.           
  29.     def initUI(self):        
  30.   
  31.         self.lbl = QLabel(self)  
  32.         qle = QLineEdit(self)  
  33.           
  34.         qle.move(60, 100)  
  35.         self.lbl.move(60, 40)  
  36.   
  37.         qle.textChanged[str].connect(self.onChanged)  
  38.           
  39.         self.setGeometry(300, 300, 280, 170)  
  40.         self.setWindowTitle('QLineEdit')  
  41.         self.show()  
  42.           
  43.           
  44.     def onChanged(self, text):  
  45.           
  46.         self.lbl.setText(text)  
  47.         self.lbl.adjustSize()          
  48.           
  49.           
  50. if __name__ == '__main__':  
  51.       
  52.     app = QApplication(sys.argv)  
  53.     ex = Example()  
  54.     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.       
  3.     self.lbl.setText(text)  
  4.     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.           
  12.     def initUI(self):
  13.         hbox = QHBoxLayout(self)  
  14.         topleft = QFrame(self)  
  15.         topleft.setFrameShape(QFrame.StyledPanel)  
  16.    
  17.         topright = QFrame(self)  
  18.         topright.setFrameShape(QFrame.StyledPanel)  
  19.   
  20.         bottom = QFrame(self)  
  21.         bottom.setFrameShape(QFrame.StyledPanel)  
  22.   
  23.         splitter1 = QSplitter(Qt.Horizontal)  
  24.         splitter1.addWidget(topleft)  
  25.         splitter1.addWidget(topright)  
  26.   
  27.         splitter2 = QSplitter(Qt.Vertical)  
  28.         splitter2.addWidget(splitter1)  
  29.         splitter2.addWidget(bottom)  
  30.   
  31.         hbox.addWidget(splitter2)  
  32.         self.setLayout(hbox)  
  33.           
  34.         self.setGeometry(300, 300, 300, 200)  
  35.         self.setWindowTitle('QSplitter')  
  36.         self.show()  
  37.           
  38.           
  39.     def onChanged(self, text):  
  40.           
  41.         self.lbl.setText(text)  
  42.         self.lbl.adjustSize()          
  43.           
  44.           
  45. if __name__ == '__main__':  
  46.       
  47.     app = QApplication(sys.argv)  
  48.     ex = Example()  
  49.     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. """  
  5. ZetCode PyQt5 tutorial   
  6.   
  7. This example shows how to use   
  8. a QComboBox widget.  
  9.    
  10. author: Jan Bodnar  
  11. website: zetcode.com   
  12. last edited: January 2015  
  13. """  
  14.   
  15. import sys  
  16. from PyQt5.QtWidgets import (QWidget, QLabel,   
  17.     QComboBox, QApplication)  
  18.   
  19.   
  20. class Example(QWidget):  
  21.       
  22.     def __init__(self):  
  23.         super().__init__()  
  24.           
  25.         self.initUI()  
  26.           
  27.           
  28.     def initUI(self):        
  29.   
  30.         self.lbl = QLabel("Ubuntu", self)  
  31.   
  32.         combo = QComboBox(self)  
  33.         combo.addItem("Ubuntu")  
  34.         combo.addItem("Mandriva")  
  35.         combo.addItem("Fedora")  
  36.         combo.addItem("Arch")  
  37.         combo.addItem("Gentoo")  
  38.   
  39.         combo.move(50, 50)  
  40.         self.lbl.move(50, 150)  
  41.   
  42.         combo.activated[str].connect(self.onActivated)          
  43.            
  44.         self.setGeometry(300, 300, 300, 200)  
  45.         self.setWindowTitle('QComboBox')  
  46.         self.show()  
  47.           
  48.           
  49.     def onActivated(self, text):  
  50.         
  51.         self.lbl.setText(text)  
  52.         self.lbl.adjustSize()    
  53.           
  54.                   
  55. if __name__ == '__main__':  
  56.       
  57.     app = QApplication(sys.argv)  
  58.     ex = Example()  
  59.     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() 
在方法里,我们设置被选择的文本到标签部件.我们会调整标签的大小.

图片:下拉列表框


内容: 这个合成医疗保健数据集的创建是为了作为数据科学、机器学习和数据分析爱好者的宝贵资源。 灵感: 医疗保健数据通常很敏感,并受隐私法规的约束,因此难以访问以进行学习和实验。为了解决这一差距,我利用 Python 的 Faker 库生成了一个数据集,该数据集反映了医疗保健记录中常见的结构和属性。通过提供这些合成数据,我希望促进医疗保健分析领域的创新、学习和知识共享。 表格信息: 每列都提供有关患者、其入院情况和提供的医疗保健服务的特定信息,使此数据集适用于医疗保健领域的各种数据分析和建模任务。以下是数据集中每一列的简要说明 - 名字:此列表示与医疗保健记录关联的患者的姓名。 年龄:患者入院时的年龄,以年表示。 性:指示患者的性别,“男性”或“女性”。 血型:患者的血型,可以是常见的血型之一(例如,“A+”、“O-”等)。 医疗状况:此列指定了与患者相关的主要医疗状况或诊断,例如“糖尿病”、“高血压”、“哮喘”等。 入学日期:患者入住医疗机构的日期。 医生:在患者入院期间负责护理的医生的姓名。 医院:标识患者收治的医疗机构或医院。 保险提供商:此列指示患者的保险提供商,可以是多个选项之一,包括“Aetna”、“Blue Cross”、“Cigna”、“UnitedHealthcare”和“Medicare”。 账单金额:患者在入院期间为他们的医疗保健服务开具的账单金额。这表示为浮点数。 房间号:患者入院期间入住的房间号。 入场类型:指定入院类型,可以是“紧急”、“选择性”或“紧急”,以反映入院的情况。 出院日期:患者从医疗机构出院的日期,基于入院日期和实际范围内的随机天数。 药物:确定患者在入院期间开具或服用的药物。例子包括“阿司匹林”、“布洛芬”、“青霉素”、“扑热息痛”和“立普妥”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值