QLabel Widget#
keywords: QLabel, Label
Label Widget 可能是最简单的 Widget 了, 常用于显式一些文本.
label_widget_1.py
1# -*- coding: utf-8 -*-
2
3"""
4展示了一些关于 Label 的基本操作.
5"""
6
7import sys
8from PySide6 import QtCore, QtWidgets
9
10
11class MainWidget(QtWidgets.QWidget):
12 """
13 Ref:
14
15 - QLabel: https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QLabel.html
16 """
17
18 def __init__(self, parent):
19 super().__init__(parent)
20 # fmt: off
21 # define
22 # 这是最基本的定义一个 Label 的语法
23 # 你还可以设置其最大宽度, 对齐方式等.
24 self.label_1_wgt = QtWidgets.QLabel("label 1", self)
25 # 默认是跟随 UI 的大小自动设置, 你可以设置一个上下限
26 self.label_1_wgt.setMaximumWidth(60)
27 # 默认是左对齐, 你可以设置为居中对齐
28 self.label_1_wgt.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
29 # 默认 Label 是不能被选中的, 你可以设置为可以用鼠标选择
30 self.label_1_wgt.setTextInteractionFlags(
31 self.label_1_wgt.textInteractionFlags()
32 | QtCore.Qt.TextInteractionFlag.TextSelectableByMouse
33 )
34
35 # 默认情况下 label 是可以是 HTML 的. 你可以放一个 <a> tag 用于实现一个超链接
36 # 当然你还可以用 HTML 来实现颜色, style 等等.
37 # 你需要 connect ``linkActivated`` signal 来处理点击事件, 决定用户点击链接的时候
38 # 会发生什么.
39 self.label_2_wgt = QtWidgets.QLabel("<font color='red'>label 2</font>: <a href='https://www.google.com'>Click here to visit Google</a>", self)
40 self.label_2_wgt.linkActivated.connect(self.label_2_link_activated_handler)
41
42 # 当然我们默认情况下都是希望用户点击链接后就在浏览器中打开, 那么你可以
43 # 调用 ``setOpenExternalLinks(True)`` 来将其设为可以通过点击打开链接.
44 # 这等于是 QT 帮你实现了这个 signal, 你就无需自己实现了.
45 self.label_3_wgt = QtWidgets.QLabel("<font color='green'>label 3</font>: <a href='https://www.google.com'>Click here to visit Google</a>", self)
46 self.label_3_wgt.setOpenExternalLinks(True)
47 # fmt: on
48
49 self.main_lay = QtWidgets.QVBoxLayout() # Vertical Box layout
50 self.main_lay.addWidget(self.label_1_wgt)
51 self.main_lay.addWidget(self.label_2_wgt)
52 self.main_lay.addWidget(self.label_3_wgt)
53 self.setLayout(self.main_lay)
54
55 @QtCore.Slot()
56 def label_2_link_activated_handler(self):
57 print("trigger label_2_link_activated_handler")
58
59
60class MainWindow(QtWidgets.QMainWindow):
61 def __init__(self):
62 super().__init__()
63 self.main_wgt = MainWidget(self)
64 self.setCentralWidget(self.main_wgt)
65 self.setGeometry(
66 int(screen_width * 0.25), # x, at 25% of screen width
67 int(screen_height * 0.25), # y, at 25% of screen height
68 int(screen_width * 0.5), # w, 50% screen width
69 int(screen_height * 0.5), # h, 50% screen height
70 )
71 self.setWindowTitle("ratio_widget")
72 self.show()
73
74
75if __name__ == "__main__":
76 app = QtWidgets.QApplication(sys.argv)
77 screen_width, screen_height = app.screens()[0].size().toTuple()
78 main = MainWindow()
79 sys.exit(app.exec())