1、引言
在現代軟件開發中,圖形用戶界面(GUI)是必不可少的一部分。常見的GUI框架有Qt、Tkinter、wxWidgets和GTK+等。其中,Qt是使用最廣泛的框架之一,PyQt5是Python與Qt的綁定庫,可以使用Python語言開發GUI應用程序。在PyQt5中,Label是GUI中最常用的元素之一,可以用於顯示靜態文本、動態文本、圖片以及鏈接等。
2、PyQt5 Label的基本用法
在PyQt5中,使用QLabel類可以創建一個標籤。QLabel的構造函數如下:
class PyQt5.QtWidgets.QLabel(text: str = None, parent: PyQt5.QtWidgets.QWidget = None, flags: PyQt5.QtCore.Qt.WindowFlags = PyQt5.QtCore.Qt.WindowFlags())
其中text是標籤顯示的文本,parent是標籤的父窗口,flags是標籤的屬性。下面給出一個顯示Hello World的標籤的例子:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbl = QLabel('Hello World', self)
self.lbl.move(50,50)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('PyQt5 Label')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
運行上面的代碼,可以看到如下圖所示的GUI界面:

在上述代碼中,我們創建了一個繼承自QWidget的Example類,然後在initUI方法中使用QLabel來創建一個標籤。我們使用了move方法來橫向和縱向移動標籤,並使用setGeometry方法來設置窗口的位置和大小,最後使用show方法來顯示窗口。
除了設置文本以外,我們還可以使用setPixmap方法來顯示圖片。下面給出一個顯示Python標誌的標籤的例子:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QPixmap
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbl = QLabel(self)
self.pixmap = QPixmap('python.png')
self.lbl.setPixmap(self.pixmap)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('PyQt5 Label')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
運行上面的代碼,可以看到如下圖所示的GUI界面:

在上述代碼中,我們使用了QPixmap來讀取圖片,並使用setPixmap方法來設置標籤的圖片。
3、PyQt5 Label的高級用法
(1)標籤的樣式設置
在PyQt5中,我們可以使用CSS樣式表來設置標籤的樣式。下面給出一個設置標籤文本為紅色、字體為Times New Roman、字號為20的例子:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QFont
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbl = QLabel(self)
self.lbl.setText('Hello World')
self.lbl.setStyleSheet('color: red; font-size: 20px; font-family: Times New Roman')
self.lbl.setGeometry(50, 50, 150, 50)
self.setWindowTitle('PyQt5 Label')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
運行上面的代碼,可以看到如下圖所示的GUI界面:

(2)標籤的動畫效果
在PyQt5中,我們可以使用QPropertyAnimation類來為標籤添加動畫效果。下面給出一個讓標籤在窗口中水平移動的例子:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtCore import QPropertyAnimation, QPoint
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbl = QLabel(self)
self.lbl.setText('Hello World')
self.lbl.setGeometry(50, 50, 150, 50)
self.setWindowTitle('PyQt5 Label')
self.show()
self.animation = QPropertyAnimation(self.lbl, b'pos')
self.animation.setDuration(3000)
self.animation.setStartValue(QPoint(50,50))
self.animation.setEndValue(QPoint(300,50))
self.animation.start()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
運行上面的代碼,可以看到標籤在窗口中水平移動的動畫效果。
(3)標籤的交互操作
在PyQt5中,我們可以為標籤添加鼠標事件等交互操作。下面給出一個為標籤添加鼠標懸浮事件的例子:
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbl = QLabel(self)
self.lbl.setGeometry(50, 50, 150, 50)
self.lbl.setAlignment(Qt.AlignCenter)
self.lbl.setText('請將鼠標移到我上面')
self.lbl.setStyleSheet('border: 1px solid black')
self.lbl.setFont(QFont('Times New Roman', 18))
self.setWindowTitle('PyQt5 Label')
self.show()
self.lbl.mousePressEvent = self.mousePressEvent
self.lbl.mouseReleaseEvent = self.mouseReleaseEvent
self.lbl.mouseDoubleClickEvent = self.mouseDoubleClickEvent
self.lbl.mouseMoveEvent = self.mouseMoveEvent
self.lbl.enterEvent = self.enterEvent
self.lbl.leaveEvent = self.leaveEvent
def enterEvent(self, event):
self.lbl.setStyleSheet('background-color: yellow')
def leaveEvent(self, event):
self.lbl.setStyleSheet('background-color: none')
def mousePressEvent(self, event):
self.lbl.setStyleSheet('background-color: red')
def mouseReleaseEvent(self, event):
self.lbl.setStyleSheet('background-color: none')
def mouseDoubleClickEvent(self, event):
self.lbl.setText('被雙擊了')
def mouseMoveEvent(self, event):
self.setWindowTitle('PyQt5 Label - 鼠標位置:({0},{1})'.format(event.x(),event.y()))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
運行上面的代碼,可以看到標籤在鼠標事件下的交互效果。
4、總結
本文介紹了如何使用PyQt5 Label處理界面元素,包括標籤的基本用法和高級用法,結合代碼給出了詳細的示例。通過本文的介紹,相信讀者對於PyQt5 Label的使用有了更深入的了解。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/227665.html