摘要:歡迎加群與我一起學習創建一個對象,接收一個文件作為參數。三個窗口和兩個分割線的布局創建完成了,但是要注意,有些主題下,分割線的顯示效果不太好。本例包含了一個和一個。
控件2
本章我們繼續介紹PyQt5控件。這次的有QPixmap,QLineEdit,QSplitter,和QComboBox。
圖片QPixmap是處理圖片的組件。本例中,我們使用QPixmap在窗口里顯示一張圖片。
#!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial 歡迎加QQ群`923 414 804`與我一起學習 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")
創建一個QPixmap對象,接收一個文件作為參數。
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_())
例子中展示了一個編輯組件和一個標簽,我們在輸入框里鍵入的文本,會立即在標簽里顯示出來。
qle = QLineEdit(self)
創建一個QLineEdit對象。
qle.textChanged[str].connect(self.onChanged)
如果輸入框的值有變化,就調用onChanged()方法。
def onChanged(self, text): self.lbl.setText(text) self.lbl.adjustSize()
在onChanged()方法內部,我們把文本框里的值賦值給了標簽組件,然后調用adjustSize()方法讓標簽自適應文本內容。
程序展示:
QSplitterQSplitter組件能讓用戶通過拖拽分割線的方式改變子窗口大小的組件。本例中我們展示用兩個分割線隔開的三個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_())
三個窗口和兩個分割線的布局創建完成了,但是要注意,有些主題下,分割線的顯示效果不太好。
topleft = QFrame(self) topleft.setFrameShape(QFrame.StyledPanel)
為了更清楚的看到分割線,我們使用了設置好的子窗口樣式。
splitter1 = QSplitter(Qt.Horizontal) splitter1.addWidget(topleft) splitter1.addWidget(topright)
創建一個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 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_())
本例包含了一個QComboBox和一個QLabel。下拉選擇框有五個選項,都是Linux的發行版名稱,標簽內容為選定的發行版名稱。
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()
在方法內部,設置標簽內容為選定的字符串,然后設置自適應文本大小。
程序展示:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42998.html
摘要:布局控件不會直接呈現內容,可看作承載可視控件的容器。布局控件也是可以模擬顯示的,通常用于調試布局樣式時用到的網格線標尺動畫幀等。但是當頁面內容需要超出屏幕尺寸時,就用和代替。 不知不覺已經到了第7篇,然而很多萌新玩家可能還是不知道如何堆砌控件,像用CSS一樣搭出漂亮的APP界面,我也一樣,紅紅火火恍恍惚惚,直到今天含淚讀完Flutter布局基礎,仿佛打開了一個全新的世界。 基本概念 在...
閱讀 1863·2023-04-26 02:46
閱讀 1996·2021-11-25 09:43
閱讀 1140·2021-09-29 09:35
閱讀 2096·2019-08-30 15:56
閱讀 3419·2019-08-30 15:54
閱讀 2627·2019-08-29 16:35
閱讀 3116·2019-08-29 15:25
閱讀 3282·2019-08-29 14:01