pyqt5教程10:Widgets2组件
1 PyQt5 widgets II
在本章中,我們將繼續(xù)介紹 PyQt5 小部件。我們將介紹 QPixmap、QLineEdit、QSplitter 和 QComboBox。
2 PyQt5 QPixmap
QPixmap 是用于處理圖像的小部件之一。它針對在屏幕上顯示圖像進(jìn)行了優(yōu)化。在我們的代碼示例中,我們將使用 QPixmap 在窗口上顯示圖像。
pixmap.py
#!/usr/bin/python""" ZetCode PyQt5 tutorialIn this example, we display an image on the window.Author: Jan Bodnar Website: zetcode.com """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('sid.jpg')lbl = QLabel(self)lbl.setPixmap(pixmap)hbox.addWidget(lbl)self.setLayout(hbox)self.move(300, 200)self.setWindowTitle('Sid')self.show()def main():app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())if __name__ == '__main__':main()在我們的示例中,我們在窗口上顯示圖像。
pixmap = QPixmap('sid.jpg')我們創(chuàng)建一個(gè) QPixmap 對象。它以文件名作為參數(shù)。
lbl = QLabel(self) lbl.setPixmap(pixmap)我們將像素圖放入 QLabel 小部件中。
3 PyQt5 QLineEdit
QLineEdit 是一個(gè)允許輸入和編輯單行純文本的小部件。小部件具有撤消和重做、剪切和粘貼以及拖放功能。
line_edit.py
#!/usr/bin/python""" ZetCode PyQt5 tutorialThis example shows text which is entered in a QLineEdit in a QLabel widget.Author: Jan Bodnar Website: zetcode.com """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, 350, 250)self.setWindowTitle('QLineEdit')self.show()def onChanged(self, text):self.lbl.setText(text)self.lbl.adjustSize()def main():app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())if __name__ == '__main__':main()此示例顯示了一個(gè)行編輯小部件和一個(gè)標(biāo)簽。我們在行編輯中鍵入的文本會立即顯示在標(biāo)簽小部件中。
qle = QLineEdit(self)已創(chuàng)建 QLineEdit 小部件。
qle.textChanged[str].connect(self.onChanged)如果行編輯小部件中的文本發(fā)生更改,我們將調(diào)用 onChanged 方法。
def onChanged(self, text):self.lbl.setText(text)self.lbl.adjustSize()在 onChanged 方法中,我們將輸入的文本設(shè)置為標(biāo)簽小部件。我們調(diào)用 adjustSize 方法將標(biāo)簽的大小調(diào)整為文本的長度。
正在上傳…重新上傳取消
Figure: QLineEdit
4 PyQt5 QSplitter
QSplitter 允許用戶通過拖動子控件之間的邊界來控制子控件的大小。在我們的示例中,我們展示了三個(gè)使用兩個(gè)拆分器組織的 QFrame 小部件。
splitter.py
#!/usr/bin/python""" ZetCode PyQt5 tutorialThis example shows how to use QSplitter widget.Author: Jan Bodnar Website: zetcode.com """import sysfrom PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame,QSplitter, QApplication)class 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, 450, 400)self.setWindowTitle('QSplitter')self.show()def main():app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())if __name__ == '__main__':main()在我們的示例中,我們有三個(gè)框架小部件和兩個(gè)拆分器。請注意,在某些主題下,拆分器可能不太明顯。
topleft = QFrame(self) topleft.setFrameShape(QFrame.StyledPanel)我們使用樣式框架來查看 QFrame 小部件之間的邊界。
splitter1 = QSplitter(Qt.Horizontal) splitter1.addWidget(topleft) splitter1.addWidget(topright)我們創(chuàng)建一個(gè) QSplitter 小部件并向其中添加兩個(gè)幀。
splitter2 = QSplitter(Qt.Vertical) splitter2.addWidget(splitter1)我們還可以將拆分器添加到另一個(gè)拆分器小部件
圖: QSplitter widget
5 PyQt5 QComboBox
QComboBox 是一個(gè)允許用戶從選項(xiàng)列表中進(jìn)行選擇的小部件。
combobox.py
#!/usr/bin/python""" ZetCode PyQt5 tutorialThis example shows how to use a QComboBox widget.Author: Jan Bodnar Website: zetcode.com """import sysfrom 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, 450, 400)self.setWindowTitle('QComboBox')self.show()def onActivated(self, text):self.lbl.setText(text)self.lbl.adjustSize()def main():app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())if __name__ == '__main__':main()該示例顯示了一個(gè) QComboBox 和一個(gè) QLabel。組合框有五個(gè)選項(xiàng)的列表。這些是 Linux 發(fā)行版的名稱。標(biāo)簽小部件顯示組合框中的選定選項(xiàng)。
combo = QComboBox(self) combo.addItem('Ubuntu') combo.addItem('Mandriva') combo.addItem('Fedora') combo.addItem('Arch') combo.addItem('Gentoo')We create a?QComboBox?widget with five options.
combo.activated[str].connect(self.onActivated)Upon an item selection, we call the?onActivated?method.
def onActivated(self, text):self.lbl.setText(text)self.lbl.adjustSize()在方法內(nèi)部,我們將所選項(xiàng)目的文本設(shè)置為標(biāo)簽小部件。我們調(diào)整標(biāo)簽的大小。
圖: QComboBox
總結(jié)
以上是生活随笔為你收集整理的pyqt5教程10:Widgets2组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pyqt5教程9:Widgets组件
- 下一篇: pyqt5教程11:绘制外观