python PyQt5中文教程☞【第八节】PyQt5控件(II)
引用文章:http://code.py40.com/pyqt5/
在這里我們將繼續介紹PyQt5控件。我們將介紹QPixmap、QLineEdit QSplitter,QComboBox。
QPixmap
QPixmap是用于處理圖像的控件。是優化的顯示圖像在屏幕上。在我們的代碼示例中,我們將使用QPixmap窗口顯示一個圖像。
# -*- coding: utf-8 -*-""" PyQt5 tutorialIn this example, we dispay an image on the window.author: py40.com last edited: 2017年3月 """ import sys from PyQt5.QtWidgets import (QWidget, QHBoxLayout,QLabel, QApplication, QDesktopWidget) from PyQt5.QtGui import QPixmapclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# Dontla 20200415 創建水平布局管理對象hbox = QHBoxLayout(self)# Dontla 20200415 創建QPixmap對象pixmap = QPixmap("小黃雞.jpg")# Dontla 20200415 創建QLabel對象,用于將QPixmap顯示在QLabel對象上lbl = QLabel(self)# Dontla 20200415 將QPixmap顯示在QLabel上lbl.setPixmap(pixmap)hbox.addWidget(lbl)self.setLayout(hbox)# self.move(300, 200) # origin# Dontla add 20200415 顯示到屏幕中心(但只執行下面這句代碼只是左上角對齊到屏幕中心點)qr = self.frameGeometry()qr.moveCenter(QDesktopWidget().availableGeometry().center())self.setWindowTitle('Red Rock')self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())
結果:
文本框 QLineEdit
QLineEdit是用于輸入或編輯單行文本的控件。它還有撤銷重做、剪切復制和拖拽功能。
# -*- coding: utf-8 -*-""" PyQt5 tutorialThis example shows text which is entered in a QLineEdit in a QLabel widget.author: py40.com last edited: 2017年3月 """ 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)# Dontla 20200415 將str作為參數傳給onChanged()函數的text參數?qle.textChanged[str].connect(self.onChanged)# Dontla 20200415 控件顯示的位置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_())結果:
QSplitter 可拉伸區域分隔器
通過QSplitter,用戶可以拖動子控件邊界來調整子控件的尺寸。在下面的示例中,我們展示了三個由兩個QSplitter組織的QFrame控件。
# -*- coding: utf-8 -*-""" PyQt5 tutorialThis example shows how to use QSplitter widget.author: py40.com last edited: 2017年3月 """ 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):# Dontla 20200418 創建水平布局對象hbox = QHBoxLayout(self)# Dontla 20200417 創建三個QFrame對象topleft = QFrame(self)topleft.setFrameShape(QFrame.StyledPanel)topright = QFrame(self)topright.setFrameShape(QFrame.StyledPanel)bottom = QFrame(self)bottom.setFrameShape(QFrame.StyledPanel)# Dontla 20200417 創建一個水平可拉伸區域分割器并綁定QFrame topleft和toprightsplitter1 = QSplitter(Qt.Horizontal)splitter1.addWidget(topleft)splitter1.addWidget(topright)# Dontla 20200417 創建一個垂直可拉伸區域分割器并綁定水平可拉伸區域分割器splitter1和QFrame bottomsplitter2 = QSplitter(Qt.Vertical)splitter2.addWidget(splitter1)splitter2.addWidget(bottom)# Dontla 20200417 splitter2才是最終合成的結果,將其加入到水平布局管理器中hbox.addWidget(splitter2)self.setLayout(hbox)# Dontla 20200417 設置當前QWidget的顯示位置和大小self.setGeometry(300, 300, 300, 200)self.setWindowTitle('QSplitter')self.show()# Dontla 20200418 貌似下面這個在本程序中沒用到def onChanged(self, text):self.lbl.setText(text)self.lbl.adjustSize()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())示例中我們創建了三個QFrame與兩個QSplitter。注意在某些主題中這些QSplitter可能會不可見。
topleft = QFrame(self) topleft.setFrameShape(QFrame.StyledPanel)我們使用一個QFrame.StyledPanel為了看到QFrame小部件之間的界限。
splitter1 = QSplitter(Qt.Horizontal) splitter1.addWidget(topleft) splitter1.addWidget(topright)我們創建一個QSplitter小部件和添加兩個框架。
splitter2 = QSplitter(Qt.Vertical) splitter2.addWidget(splitter1)我們也可以將QSplitter添加到另一個QSplitter控件中。
結果:
下拉列表 QComboBox
QComboBox是允許用戶從下拉列表中進行選擇的控件。
# -*- coding: utf-8 -*-""" PyQt5 tutorialThis example shows how to use a QComboBox widget.author: py40.com last edited: 2017年3月 """ import sys from PyQt5.QtWidgets import (QWidget, QLabel,QComboBox, QApplication)class Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# Dontla 20200418 創建一個名為Ubuntu的標簽?初始標簽?self.lbl = QLabel("Ubuntu", self)# Dontla 20200418 創建一個下拉列表框combo = QComboBox(self)# Dontla 20200418 為下拉列表框添加候選字符串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,QComboBox控件中有5個選項(Linux系統的幾個發行版名稱)。QLabel控件會顯示QComboBox中選中的某個選項。
combo = QComboBox(self) combo.addItem("Ubuntu") combo.addItem("Mandriva") combo.addItem("Fedora") combo.addItem("Arch") combo.addItem("Gentoo")創建了一個有五個選項的QComboBox
combo.activated[str].connect(self.onActivated)當選中某個條目時會調用onActivated()方法。
def onActivated(self, text):self.lbl.setText(text)self.lbl.adjustSize()在方法中我們將QLabel控件的內容設置為選中的條目,然后調整它的尺寸。
結果:
總結
以上是生活随笔為你收集整理的python PyQt5中文教程☞【第八节】PyQt5控件(II)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python PyQt5 setGeom
- 下一篇: 牙齿的矫正