pyqy5——控件2
控件2
本章我們繼續(xù)介紹PyQt5控件。這次的有QPixmap,QLineEdit,QSplitter,和QComboBox。
圖片
QPixmap是處理圖片的組件。本例中,我們使用QPixmap在窗口里顯示一張圖片。
#!/usr/bin/python3 # -*- coding: utf-8 -*-""" ZetCode PyQt5 tutorial 歡迎加QQ群`923 414 804`與我一起學(xué)習(xí) In this example, we dispay an image on the window. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QLabel, QApplication) from PyQt5.QtGui import QPixmap import sysclass 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")創(chuàng)建一個QPixmap對象,接收一個文件作為參數(shù)。
lbl = QLabel(self) lbl.setPixmap(pixmap)把QPixmap實例放到QLabel組件里。
程序展示:
行編輯
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: August 2017 """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_())例子中展示了一個編輯組件和一個標(biāo)簽,我們在輸入框里鍵入的文本,會立即在標(biāo)簽里顯示出來。
qle = QLineEdit(self)創(chuàng)建一個QLineEdit對象。
qle.textChanged[str].connect(self.onChanged)如果輸入框的值有變化,就調(diào)用onChanged()方法。
def onChanged(self, text):self.lbl.setText(text)self.lbl.adjustSize()在onChanged()方法內(nèi)部,我們把文本框里的值賦值給了標(biāo)簽組件,然后調(diào)用adjustSize()方法讓標(biāo)簽自適應(yīng)文本內(nèi)容。
程序展示:
QSplitter
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: August 2017 """from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame, QSplitter, QStyleFactory, QApplication) from PyQt5.QtCore import Qt import sysclass 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_())三個窗口和兩個分割線的布局創(chuàng)建完成了,但是要注意,有些主題下,分割線的顯示效果不太好。
topleft = QFrame(self) topleft.setFrameShape(QFrame.StyledPanel)為了更清楚的看到分割線,我們使用了設(shè)置好的子窗口樣式。
splitter1 = QSplitter(Qt.Horizontal) splitter1.addWidget(topleft) splitter1.addWidget(topright)創(chuàng)建一個QSplitter組件,并在里面添加了兩個框架。
splitter2 = QSplitter(Qt.Vertical) splitter2.addWidget(splitter1)也可以在分割線里面再進行分割。
程序展示:
下拉選框
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: August 2017 """from PyQt5.QtWidgets import (QWidget, QLabel, QComboBox, QApplication) import sysclass 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_())本例包含了一個QComboBox和一個QLabel。下拉選擇框有五個選項,都是Linux的發(fā)行版名稱,標(biāo)簽內(nèi)容為選定的發(fā)行版名稱。
combo = QComboBox(self) combo.addItem("Ubuntu") combo.addItem("Mandriva") combo.addItem("Fedora") combo.addItem("Arch") combo.addItem("Gentoo")創(chuàng)建一個QComboBox組件和五個選項。
combo.activated[str].connect(self.onActivated)在選中的條目上調(diào)用onActivated()方法。
def onActivated(self, text):self.lbl.setText(text)self.lbl.adjustSize()在方法內(nèi)部,設(shè)置標(biāo)簽內(nèi)容為選定的字符串,然后設(shè)置自適應(yīng)文本大小。
程序展示:
轉(zhuǎn)載于:https://www.cnblogs.com/paisenpython/p/10254664.html
總結(jié)
以上是生活随笔為你收集整理的pyqy5——控件2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sqlserver中 登录用户只能看到自
- 下一篇: 航空路线问题