摘要:歡迎加群與我一起學(xué)習(xí)創(chuàng)建一個(gè)對(duì)象,接收一個(gè)文件作為參數(shù)。三個(gè)窗口和兩個(gè)分割線的布局創(chuàng)建完成了,但是要注意,有些主題下,分割線的顯示效果不太好。本例包含了一個(gè)和一個(gè)。
控件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 sys class 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)建一個(gè)QPixmap對(duì)象,接收一個(gè)文件作為參數(shù)。
lbl = QLabel(self) lbl.setPixmap(pixmap)
把QPixmap實(shí)例放到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_())
例子中展示了一個(gè)編輯組件和一個(gè)標(biāo)簽,我們?cè)谳斎肟蚶镦I入的文本,會(huì)立即在標(biāo)簽里顯示出來(lái)。
qle = QLineEdit(self)
創(chuàng)建一個(gè)QLineEdit對(duì)象。
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)容。
程序展示:
QSplitterQSplitter組件能讓用戶通過(guò)拖拽分割線的方式改變子窗口大小的組件。本例中我們展示用兩個(gè)分割線隔開(kāi)的三個(gè)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 sys 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, 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_())
三個(gè)窗口和兩個(gè)分割線的布局創(chuàng)建完成了,但是要注意,有些主題下,分割線的顯示效果不太好。
topleft = QFrame(self) topleft.setFrameShape(QFrame.StyledPanel)
為了更清楚的看到分割線,我們使用了設(shè)置好的子窗口樣式。
splitter1 = QSplitter(Qt.Horizontal) splitter1.addWidget(topleft) splitter1.addWidget(topright)
創(chuàng)建一個(gè)QSplitter組件,并在里面添加了兩個(gè)框架。
splitter2 = QSplitter(Qt.Vertical) splitter2.addWidget(splitter1)
也可以在分割線里面再進(jìn)行分割。
程序展示:
下拉選框QComboBox組件能讓用戶在多個(gè)選擇項(xiàng)中選擇一個(gè)。
#!/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 sys 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_())
本例包含了一個(gè)QComboBox和一個(gè)QLabel。下拉選擇框有五個(gè)選項(xiàng),都是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)建一個(gè)QComboBox組件和五個(gè)選項(xiàng)。
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)文本大小。
程序展示:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42998.html
摘要:布局控件不會(huì)直接呈現(xiàn)內(nèi)容,可看作承載可視控件的容器。布局控件也是可以模擬顯示的,通常用于調(diào)試布局樣式時(shí)用到的網(wǎng)格線標(biāo)尺動(dòng)畫(huà)幀等。但是當(dāng)頁(yè)面內(nèi)容需要超出屏幕尺寸時(shí),就用和代替。 不知不覺(jué)已經(jīng)到了第7篇,然而很多萌新玩家可能還是不知道如何堆砌控件,像用CSS一樣搭出漂亮的APP界面,我也一樣,紅紅火火恍恍惚惚,直到今天含淚讀完Flutter布局基礎(chǔ),仿佛打開(kāi)了一個(gè)全新的世界。 基本概念 在...
閱讀 1908·2023-04-26 02:46
閱讀 2032·2021-11-25 09:43
閱讀 1173·2021-09-29 09:35
閱讀 2127·2019-08-30 15:56
閱讀 3447·2019-08-30 15:54
閱讀 2675·2019-08-29 16:35
閱讀 3153·2019-08-29 15:25
閱讀 3323·2019-08-29 14:01