QLabel 標(biāo)簽

QLabel 是 PyQt6 里用來(lái)建立文字或圖片的標(biāo)簽控件,這篇教學(xué)會(huì)介紹如何在 PyQt6 窗口里加入 QLabel 標(biāo)簽,并進(jìn)行像是文字字型、大小、顏色和位置...等參數(shù)設(shè)定。
快速預(yù)覽:
加入 QLabel 標(biāo)簽
QLabel 位置設(shè)定
QLabel 文字設(shè)定
使用 StyleSheet 設(shè)定 QLabel 樣式
加入 QLabel 標(biāo)簽
建立 PyQt6 窗口物件后,透過(guò) QtWidgets.QLabel(widget
) 方法,就能在指定的控件中建立標(biāo)簽,下方的程序執(zhí)行后,會(huì)加入一個(gè) QLabel 標(biāo)簽,并使用 setText() 方法加入文字。
?from PyQt6 import QtWidgets
?import sys
?
?app = QtWidgets.QApplication(sys.argv)
?
?Form = QtWidgets.QWidget()
?Form.setWindowTitle('千牛編程思維')
?Form.resize(320, 240)
?
?label = QtWidgets.QLabel(Form) ?
?label.setText('hello world') ? ?
?
?Form.show()
?sys.exit(app.exec())
類(lèi)寫(xiě)法:
?# 導(dǎo)入PyQt6庫(kù)中的QtWidgets模塊和sys模塊
?from PyQt6 import QtWidgets
?import sys
?
?# 創(chuàng)建一個(gè)名為MyWidget的類(lèi),繼承自QtWidgets.QWidget類(lèi)
?class MyWidget(QtWidgets.QWidget):
? ? ?# 構(gòu)造函數(shù)
? ? ?def __init__(self):
? ? ? ? ?super().__init__()
? ? ? ? ?self.setWindowTitle('千牛編程思維') ?# 設(shè)置窗口標(biāo)題
? ? ? ? ?self.resize(320, 240) ?# 設(shè)置窗口尺寸
? ? ? ? ?self.ui() ?# 調(diào)用ui函數(shù)
?
? ? ?# ui函數(shù)用于創(chuàng)建用戶(hù)界面
? ? ?def ui(self):
? ? ? ? ?self.label = QtWidgets.QLabel(self) ?# 創(chuàng)建QLabel對(duì)象并將其添加到窗口上
? ? ? ? ?self.label.setText('hello world') ?# 在標(biāo)簽中顯示文本
?
?if __name__ == '__main__':
? ? ?app = QtWidgets.QApplication(sys.argv) ?# 創(chuàng)建Qt應(yīng)用程序?qū)ο?br>? ? ?Form = MyWidget() ?# 創(chuàng)建MyWidget對(duì)象
? ? ?Form.show() ?# 顯示窗口
? ? ?sys.exit(app.exec()) ?# 運(yùn)行應(yīng)用程序并退出

QLabel 位置設(shè)定
透過(guò)下列 QLabel 方法,可以將 QLabel 控件定位到指定的位置:
方法參數(shù)說(shuō)明移動(dòng)()x, y設(shè)定 QLabel 在擺放的父控件中的 xy 座標(biāo),x 往右為正,y 往下為正,尺寸根據(jù)內(nèi)容自動(dòng)延伸。設(shè)置幾何()x, y, w, h設(shè)定 QLabel 在擺放的父控件中的 xy 座標(biāo)和長(zhǎng)寬尺寸,x 往右為正,y 往下為正,如果超過(guò)長(zhǎng)寬尺寸,預(yù)設(shè)會(huì)被裁切無(wú)法顯示。setContentMargins()左、上、右、下QLabel 的邊界寬度。
下方的程序執(zhí)行后會(huì)放入兩個(gè) QLabel,一個(gè)使用 move() 定位在 (50,50) 位置,另外一個(gè)使用 setGeometry() 方法定位在 (50, 80) 的位置并設(shè)定大小為 100x100。
?from PyQt6 import QtWidgets
?import sys
?
?app = QtWidgets.QApplication(sys.argv)
?
?Form = QtWidgets.QWidget()
?Form.setWindowTitle('千牛編程思維')
?Form.resize(320, 240)
?
?label1 = QtWidgets.QLabel(Form)
?label1.setText('hello world, how are you?')
?label1.move(50, 50)
?
?label2 = QtWidgets.QLabel(Form)
?label2.setText('hello world, how are you?')
?label2.setGeometry(50, 80, 100, 100)
?
?Form.show()
?sys.exit(app.exec())
類(lèi)寫(xiě)法:
?from PyQt6 import QtWidgets
?import sys
?
?class MyWidget(QtWidgets.QWidget):
? ? ?def __init__(self):
? ? ? ? ?super().__init__()
? ? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ? ?self.resize(320, 240)
? ? ? ? ?self.ui()
?
? ? ?def ui(self):
? ? ? ? ?self.label1 = QtWidgets.QLabel(self)
? ? ? ? ?self.label1.setText('hello world, how are you?')
? ? ? ? ?self.label1.move(50, 50)
?
? ? ? ? ?self.label2 = QtWidgets.QLabel(self)
? ? ? ? ?self.label2.setText('hello world, how are you?')
? ? ? ? ?self.label2.setGeometry(50, 80, 100, 100)
?
?if __name__ == '__main__':
? ? ?app = QtWidgets.QApplication(sys.argv)
? ? ?Form = MyWidget()
? ? ?Form.show()
? ? ?sys.exit(app.exec())

QLabel 文字設(shè)定
透過(guò)下列常用的 QLabel 方法,可以設(shè)定 QLabel 中的文字樣式 ( 設(shè)定字體需要搭配 QtGui,設(shè)定對(duì)齊要搭配 QtCore,需要額外載入對(duì)應(yīng)模組 ):
方法參數(shù)說(shuō)明設(shè)置文字換行()布爾是否換行,預(yù)設(shè) Fasle 不換行,設(shè)定 True 換行。setAlignment()QtCore.Qt.AlignmentFlag對(duì)齊方式,預(yù)設(shè) ,可設(shè)定 、 ( 此處與 PyQt5 不同 )。QtCore.Qt.AlignmentFlag.AlignCenter``QtCore.Qt.AlignmentFlag.AlignRight``QtCore.Qt.AlignmentFlag.AlignLeft
setFont()QtGui.QFont()文字樣式設(shè)定,需搭配 QtGui.QFont()。
使用 QtGui.QFont() 產(chǎn)生的文字樣式,可以使用下列方法設(shè)定:
方法參數(shù)說(shuō)明font.setFamily()名字字體名稱(chēng)。設(shè)置點(diǎn)大小你在那里字體大小。設(shè)置粗體()布爾是否粗體,預(yù)設(shè) False。設(shè)置斜體()布爾是否斜體,預(yù)設(shè) False。setStrikeOut()布爾是否加入刪除線(xiàn),預(yù)設(shè) False。設(shè)置下劃線(xiàn)()布爾是否加入底線(xiàn),預(yù)設(shè) False。
下方的程序執(zhí)行后,開(kāi)啟的窗口中會(huì)出現(xiàn)一個(gè)設(shè)定過(guò)樣式的 QLabel。
?from PyQt6 import QtWidgets, QtGui, QtCore
?import sys
?
?app = QtWidgets.QApplication(sys.argv)
?
?Form = QtWidgets.QWidget()
?Form.setWindowTitle('千牛編程思維')
?Form.resize(320, 240)
?
?label = QtWidgets.QLabel(Form)
?label.setText('hello world, how are you?')
?label.setGeometry(30, 30, 100, 100)
?
?label.setContentsMargins(0,0,0,0) ? ? ? ? ?# 設(shè)定邊界
?label.setWordWrap(True) ? ? ? ? ? ? ? ? ? ?# 可以換行
?label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) ?# 對(duì)齊方式
?
?font = QtGui.QFont() ? ? ? ? ? ? ? ? ? ? ? # 建立文字樣式控件
?font.setFamily('Verdana') ? ? ? ? ? ? ? ? ?# 設(shè)定字體
?font.setPointSize(10) ? ? ? ? ? ? ? ? ? ? ?# 文字大小
?font.setBold(True) ? ? ? ? ? ? ? ? ? ? ? ? # 粗體
?font.setItalic(True) ? ? ? ? ? ? ? ? ? ? ? # 斜體
?font.setStrikeOut(True) ? ? ? ? ? ? ? ? ? ?# 刪除線(xiàn)
?font.setUnderline(True) ? ? ? ? ? ? ? ? ? ?# 底線(xiàn)
?label.setFont(font) ? ? ? ? ? ? ? ? ? ? ? ?# 設(shè)定文字樣式
?
?Form.show()
?sys.exit(app.exec())
類(lèi)寫(xiě)法:
?from PyQt6 import QtWidgets, QtGui, QtCore
?import sys
?
?class MyWidget(QtWidgets.QWidget):
? ? ?def __init__(self):
? ? ? ? ?super().__init__()
? ? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ? ?self.resize(320, 240)
? ? ? ? ?self.ui()
?
? ? ?def ui(self):
? ? ? ? ?self.label = QtWidgets.QLabel(self)
? ? ? ? ?self.label.setText('hello world, how are you?')
? ? ? ? ?self.label.setGeometry(30, 30, 200, 200)
?
? ? ? ? ?self.label.setContentsMargins(0,0,0,0) ? ? # 設(shè)定邊界
? ? ? ? ?self.label.setWordWrap(True) ? ? ? ? ? ? ? # 可以換行
? ? ? ? ?self.label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) ?# 對(duì)齊方式
?
? ? ? ? ?font = QtGui.QFont() ? ? ? ? ? ? ? ? ? ? ? # 建立文字樣式控件
? ? ? ? ?font.setFamily('Verdana') ? ? ? ? ? ? ? ? ?# 設(shè)定字體
? ? ? ? ?font.setPointSize(10) ? ? ? ? ? ? ? ? ? ? ?# 文字大小
? ? ? ? ?font.setBold(True) ? ? ? ? ? ? ? ? ? ? ? ? # 粗體
? ? ? ? ?font.setItalic(True) ? ? ? ? ? ? ? ? ? ? ? # 斜體
? ? ? ? ?font.setStrikeOut(True) ? ? ? ? ? ? ? ? ? ?# 刪除線(xiàn)
? ? ? ? ?font.setUnderline(True) ? ? ? ? ? ? ? ? ? ?# 底線(xiàn)
? ? ? ? ?self.label.setFont(font) ? ? ? ? ? ? ? ? ? # 設(shè)定文字樣式
?
?if __name__ == '__main__':
? ? ?app = QtWidgets.QApplication(sys.argv)
? ? ?Form = MyWidget()
? ? ?Form.show()
? ? ?sys.exit(app.exec())

QLabel 加入圖片
如果要在 QLabel 里加入圖片,需要先使用 QtGui.QImage() 方法讀取圖片,接著使用 setPixmap() 方法加入圖片,詳細(xì)步驟可以參考下方程序:
?from PyQt6 import QtWidgets, QtGui
?import sys
?
?app = QtWidgets.QApplication(sys.argv)
?
?Form = QtWidgets.QWidget()
?Form.setWindowTitle('千牛編程思維')
?Form.resize(800, 600)
?
?label = QtWidgets.QLabel(Form)
?label.setGeometry(20, 20, 300, 500)
?
?img = QtGui.QImage('Mona.jpg') ? ? ? ? ? ? ? ? # 讀取圖片
?label.setPixmap(QtGui.QPixmap.fromImage(img)) ?# 加入圖片
?
?Form.show()
?sys.exit(app.exec())
類(lèi)寫(xiě)法:
?from PyQt6 import QtWidgets, QtGui, QtCore
?import sys
?
?class MyWidget(QtWidgets.QWidget):
? ? ?def __init__(self):
? ? ? ? ?super().__init__()
? ? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ? ?self.resize(800, 600)
? ? ? ? ?self.ui()
?
? ? ?def ui(self):
? ? ? ? ?self.label = QtWidgets.QLabel(self)
? ? ? ? ?self.label.setGeometry(20, 20, 300, 500)
?
? ? ? ? ?img = QtGui.QImage('Mona.jpg') ? ? ? ? ? ? ? ? # 讀取圖片
? ? ? ? ?self.label.setPixmap(QtGui.QPixmap.fromImage(img)) ?# 加入圖片
?
?if __name__ == '__main__':
? ? ?app = QtWidgets.QApplication(sys.argv)
? ? ?Form = MyWidget()
? ? ?Form.show()
? ? ?sys.exit(app.exec())

使用 StyleSheet 設(shè)定 QLabel 樣式
如果會(huì)使用網(wǎng)頁(yè) CSS 語(yǔ)法,就能透過(guò) setStyleSheet() 設(shè)定 QLabel 樣式,在設(shè)計(jì)樣式上也較為彈性好用,下方的程序執(zhí)行后,會(huì)套用 CSS 樣式語(yǔ)法,實(shí)現(xiàn)一個(gè)黑色虛線(xiàn)外框的 QLabel ( 不支援 CSS3 相關(guān)語(yǔ)法 )。
from PyQt6 import QtWidgets, QtGui
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
Form.setWindowTitle('千牛編程思維')
Form.resize(320, 240)
label = QtWidgets.QLabel(Form)
label.setText('hello world, how are you?')
label.setGeometry(20, 20, 200, 150)
label.setWordWrap(True) ? ?# 設(shè)定可以換行
label.setStyleSheet('''
? ?background:#fff;
? ?color:#f00;
? ?font-size:20px;
? ?font-weight:bold;
? ?border:2px dashed #000;
? ?padding:20px;
? ?text-align:center;
''')
Form.show()
sys.exit(app.exec())
類(lèi)寫(xiě)法:
from PyQt6 import QtWidgets, QtGui, QtCore
import sys
class MyWidget(QtWidgets.QWidget):
? ?def __init__(self):
? ? ? ?super().__init__()
? ? ? ?self.setWindowTitle('千牛編程思維')
? ? ? ?self.resize(320, 240)
? ? ? ?self.ui()
? ?def ui(self):
? ? ? ?self.label = QtWidgets.QLabel(self)
? ? ? ?self.label.setText('hello world, how are you?')
? ? ? ?self.label.setGeometry(20, 20, 200, 150)
? ? ? ?self.label.setWordWrap(True) ? ?
? ? ? ?self.label.setStyleSheet('''
? ? ? ? ? ?background:#fff;
? ? ? ? ? ?color:#f00;
? ? ? ? ? ?font-size:20px;
? ? ? ? ? ?font-weight:bold;
? ? ? ? ? ?border:2px dashed #000;
? ? ? ? ? ?padding:20px;
? ? ? ? ? ?text-align:center;
? ? ? ?''')
if __name__ == '__main__':
? ?app = QtWidgets.QApplication(sys.argv)
? ?Form = MyWidget()
? ?Form.show()
? ?sys.exit(app.exec())