笔记二 富文本格式

关于设置文字自动换行以及问题:纯数字时自动换行不起作用。

1
2
3
4
5
6
# 设置文字为富文本格式,字体大小16pt
book_name_label = QLabel(
f"<span style='font-size:16pt'>{book_name}</span>"
)
# 设置自动换行
book_name_label.setWordWrap(True)

一些问题:如果文字是纯数字将不起作用。

笔记三 滚动布局

设置滚动布局:

1
2
3
4
5
6
7
8
9
10
11
area = QScrollArea()
widget_area = QWidget()

# 注1
area.setWidgetResizable(True)

layout_area = QVBoxLayout(widget_area)
layout_area.addStretch(1)

area.setWidget(widget_area)

注1:处理坑,子控件大小和area不一致,设置area的属性。

笔记四 分割线

  1. 分割线
1
2
3
4
5
# 设置一个分割线
frame = QFrame()
frame.setFrameShape(QFrame.Shape.HLine) # 设置为水平分割线
frame.setLineWidth(1) # 设置分割线宽度为1像素
layout_area.addWidget(frame)
  1. 分割用的矩形

可以用来填充界面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建QFrame
frame = QtWidgets.QFrame(self)
frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
frame.setFrameShadow(QtWidgets.QFrame.Raised)

# 设置尺寸策略为自动扩充
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding
)
frame.setSizePolicy(sizePolicy)
frame.setFrameShape(QtWidgets.QFrame.NoFrame)
# 设置QFrame背景为透明
frame.setAttribute(QtCore.Qt.WA_TranslucentBackground)

layout.addWidget(frame)

补充

本来以为这个系列可以出很多期,结果现在的项目很快也就写完了,PySide6还有很多不完善的地方,我又开始纠结犹豫,和《纸间书摘》的开发者聊了之后他推荐给我一套新的技术栈,这周终于有时间看了一下,基于compose的安卓开发比以往容易了许多,kotlin+compose终于变得优雅起来了,相比之下感觉比flutter更让人心动?

总之开始学习起来了。