標簽
QLabel
用於顯示文本或圖像。沒有提供用戶交互功能。標簽的視覺外觀可以通過各種方式進行配置,並且可以用於為另一個窗口小部件指定焦點助記鍵。
一個QLabel
可以包含以下任意內容類型:
內容 | 設置 |
---|---|
純文本 | 將普通字符串傳遞給setText() |
富文本 | 將包含富文本的字符傳遞給setText() |
像素圖 | 將QPixmap 傳遞給setPixmap() |
電影 | 將QMovie 傳遞給setMovie() |
號碼 | 將int 或double 傳遞給setNum() ,它將數字轉換為純文本 |
無 | 與空的純文本相同,這是默認值,由clear() 設置 |
創建普通文本
# _*_coding:utf-8 _*_
import sys
from PyQt5.QtWidgets import *
class Win(QMainWindow):
def __init__(self):
super().__init__()
self.initUi()
def initUi(self):
widget = QWidget(self)
self.setCentralWidget(widget)
word = """
1. 前面的空白就是我設置的縮進: setWordWrap();
2. 這是一段普通的文本: setText();
3. 我還加了形狀: setFrameStyle();
4. 不僅如此,在窗口縮小到一定程度時,我還能自動換行喔: setIdent()
5. 我已經連接到我的按鈕伙伴,使用快捷鍵Alt+D模擬點擊: setLayout()
"""
self.label = QLabel(word, self)
self.label.setFrameStyle(QFrame.Panel | QFrame.Sunken)
self.label.setIndent(50)
self.label.setWordWrap(True)
self.pushButton = QPushButton("我是按鈕 (&D)", self)
self.label.setBuddy(self.pushButton)
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.label)
self.layout.addWidget(self.pushButton)
widget.setLayout(self.layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Win()
win.show()
sys.exit(app.exec_())
創建其他文本
# _*_coding:utf-8 _*_
from PyQt5.QtWidgets import *
import sys
class Win(QMainWindow):
def __init__(self):
super().__init__()
self.initUi()
def initUi(self):
widget = QWidget(self)
self.setCentralWidget(widget)
word = """
1. 前面的空白就是我設置的縮進: <b style="color:red">setWordWrap()</b>;<br>
2. 這是一段普通的文本: <b style="color:red">setText()</b>;<br>
3. 我還加了形狀: <b style="color:red">setFrameStyle()</b>;<br>
4. 不僅如此,在窗口縮小到一定程度時,我還能自動換行喔: <b style="color:red">setIdent()</b>;<br>
5. 我已經連接到我的按鈕伙伴,使用快捷鍵Alt+D模擬點擊: <b style="color:red">setLayout()</b>;<br>
"""
self.label = QLabel(word, self)
self.label.setFrameStyle(QFrame.Panel | QFrame.Sunken)
self.label.setIndent(50)
self.label.setWordWrap(True)
self.pushButton = QPushButton("我是按鈕 (&D)", self)
self.label.setBuddy(self.pushButton)
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.label)
self.layout.addWidget(self.pushButton)
widget.setLayout(self.layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Win()
win.show()
sys.exit(app.exec_())
代碼一毛一樣,就是文本變了
創建圖片標簽
# _*_coding:utf-8 _*_
from PyQt5.QtWidgets import *
import sys
class Win(QMainWindow):
def __init__(self):
super().__init__()
self.initUi()
def initUi(self):
widget = QWidget(self)
self.setCentralWidget(widget)
self.label = QLabel(self)
self.label.setPixmap(QPixmap("D:\\image\python.png")) # 添加圖片
self.label.setScaledContents(True)
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.label)
widget.setLayout(self.layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Win()
win.show()
sys.exit(app.exec_())
創建動畫標簽
# _*_coding:utf-8 _*_
from PyQt5.QtWidgets import *
import sys
class Win(QMainWindow):
def __init__(self):
super().__init__()
self.initUi()
def initUi(self):
self.resize(700, 500)
widget = QWidget(self)
self.setCentralWidget(widget)
self.label = QLabel(self) # 創建一個空標簽
self.movie = QMovie("C:\\Users\\oliven\\Desktop\\jumpstar.gif") # 動畫路徑
self.label.setMovie(self.movie) # 添加到label里
self.label.setScaledContents(True) # 縮放其內容以填充所有可用空間
self.label.setFrameStyle(QFrame.Panel | QFrame.Sunken) # 設置形狀
self.label.setIndent(50) # 設置縮進
self.label.setWordWrap(True) # 設置自動換行
self.pushButton = QPushButton("開始動畫 (&D)", self) # 創建按鈕
self.label.setBuddy(self.pushButton) # 為label加一個伙伴
self.pushButton.clicked.connect(self.run) # 將按鈕點擊信號連接到槽
self.layout = QVBoxLayout(self) # 垂直布局
self.layout.addWidget(self.label) #將控件添加到布局
self.layout.addWidget(self.pushButton)
widget.setLayout(self.layout) # 設置控件布局
def run(self):
self.movie.start()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Win()
win.show()
sys.exit(app.exec_())
標簽常用方法
-
QLabel().setAlignment()
:設置標簽對齊方式-
例如:
QLabel().setAlignment(Qt.AlignBottom)
-
可用的參數:
Qt.AlignLeft
:與左邊緣對齊Qt.ALignRight
:與右邊緣對齊Qt.AlignHCenter
:在可用空間中水平居中Qt.AlignJustify
:在可用空間中對齊文本Qt.AlignTop
:與頂部對齊Qt.AlignBottom
:與底部對齊Qt.AlignVcenter
:在可用控件中垂直居中Qt.AlignBaseline
:與基線對齊Qt.AlignCenter
:在兩個維度上均居中
-
-
QLabel().setIndent()
:按當前對齊方式進行設置縮進- 例如:
QLabel().setIndent(10)
,表示縮進10個
- 例如:
-
QLabel().setMargin()
:設置邊距的寬度- 例如:
QLabel().setMargin(10)
- 例如:
-
QLabel().setOpenExternalLinks()
:是否為超鏈接開啟自動打開鏈接,而不是發出linkAction()
信號- 例如:
QLabel().setOpenExternalLinks(True)
- 例如:
-
QLabel().setPixmap()
:為標簽設置一個圖片- 例如:
QLabel().setPixmap(QPixmap("C:\\image\1.png"))
- 例如:
-
QLabel().setScaledContents()
:是否將縮放其內容以填充所有可用空間;啟用后,標簽會顯示一個像素圖,它將縮放該像素圖以填充可用空間。- 例如:
QLabel().setScaledContents(True)
- 例如:
-
QLabel().setText()
:為標簽設置一個文本- 例如:
QLabel().setText("Hello World")
- 例如:
-
QLabel().setTextInteractionFlags()
:指定標簽顯示的文本如何與用戶輸入交互- 例如:
QLabel().setTextInteractionFlags(Qt.TextSelectableByMouse)
:表示鼠標可以選中該標簽的文字 - 可用參數如下:
Qt.NoTextInteraction
:無法與文字交互Qt.TextSelectableByMouse
:可以使用鼠標選擇文本,然后使用上下文菜單或標准鍵盤快捷鍵將其復制到剪貼板。Qt.TextSelectableByKeyboard
:可以使用鍵盤上的光標鍵選擇文本。顯示一個文本光標。Qt.LinksAccessibleByMouse
:鏈接可以用鼠標突出顯示並激活Qt.LinksAccessibleByKeyboard
:可以使用Tab鍵突出顯示連接,並使Enter激活它。Qt.TextEditorInteraction
:文本編輯器的默認值:TextSelectableByMouse
TextSelectableByKeyboard
TextEditable
Qt.TextBrowserInteraction
:QTextBrowser
的默認值。
- 例如:
-
QLabel().setWordWrap()
:自動換行- 例如:
QLabel().setWordWrpap(True)
- 例如:
-
QLabel().clear()
:清除所有標簽內容 -
QLabel().linkActivated()
:單擊鏈接時會發出此信號- 例如:
QLabel().linkActivated.connect(self.func)
:self.func
是自己創建的函數
- 例如:
-
QLabel().linkHovered()
:鼠標滑過鏈接時發出此信號- 例如:
QLabel().linkHovered.connect(self.func)
- 例如:
-
QLabel().setMovie()
:為標簽添加一個視頻(這里添加一個GIF動圖)- 例如:
QLabel().setMoive(QMovie("C:\\image\\funny.gif"))
- 例如:
-
QLabel().setPicture()
:添加一個Picture -
QLabel().setSelection()
:選擇開始到結束的文本- 例如:
QLabel().setSelection(1, 10)
- 例如: