Skip to content

Commit f2786a6

Browse files
committed
Adapt to new version of PySide6 type stub
调整代码以适应PySide6的新版类型存根(.pyi)
1 parent 1e330ec commit f2786a6

File tree

22 files changed

+175
-172
lines changed

22 files changed

+175
-172
lines changed

03-QtWidgets-常用控件/03-QLineEdit-单行文本编辑器/02-QLineEdit-显示模式.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
import sys
2-
3-
from PySide6 import QtCore, QtWidgets
4-
51
"""
62
QLineEdit 显示模式
73
默认显示模式为正常,即用户输入什么就显示什么
@@ -20,9 +16,12 @@
2016
2117
.text() -> str 返回LineEdit内的文本,与显示模式无关
2218
.displayText() -> str 返回LineEdit中显示的文本。例如Password模式下可能会获得"*******"
23-
2419
"""
2520

21+
import sys
22+
23+
from PySide6 import QtCore, QtWidgets
24+
2625

2726
class MyWidget(QtWidgets.QWidget):
2827
def __init__(self, *args, **kwargs):
@@ -63,10 +62,10 @@ def setup_ui(self) -> None:
6362

6463
def test_echo_mode(self) -> None:
6564
"""测试显示模式功能"""
66-
self.line_edit_1.setEchoMode(QtWidgets.QLineEdit.Normal)
67-
self.line_edit_2.setEchoMode(QtWidgets.QLineEdit.Password)
68-
self.line_edit_3.setEchoMode(QtWidgets.QLineEdit.PasswordEchoOnEdit)
69-
self.line_edit_4.setEchoMode(QtWidgets.QLineEdit.NoEcho)
65+
self.line_edit_1.setEchoMode(QtWidgets.QLineEdit.EchoMode.Normal)
66+
self.line_edit_2.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
67+
self.line_edit_3.setEchoMode(QtWidgets.QLineEdit.EchoMode.PasswordEchoOnEdit)
68+
self.line_edit_4.setEchoMode(QtWidgets.QLineEdit.EchoMode.NoEcho)
7069

7170
@QtCore.Slot()
7271
def test_slot():

03-QtWidgets-常用控件/03-QLineEdit-单行文本编辑器/10-QLineEdit-自定义行为-明密文切换案例.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
import sys
2-
3-
from PySide6 import QtCore, QtGui, QtWidgets
4-
51
"""
62
QLineEdit Action 案例
73
单行文本编辑器可以在行首或行尾添加自定义的行为
@@ -13,9 +9,12 @@
139
QLineEdit.ActionPosition枚举值具体有以下两种取值:
1410
QLineEdit.LeadingPosition 若布局从左至右则将行为添加至最左侧,反之则添加至最右侧
1511
QLineEdit.TrailingPosition 若布局从左至右则将行为添加至最右侧,反之则添加至最左侧
16-
1712
"""
1813

14+
import sys
15+
16+
from PySide6 import QtCore, QtGui, QtWidgets
17+
1918

2019
class MyWidget(QtWidgets.QWidget):
2120
def __init__(self, *args, **kwargs):
@@ -30,7 +29,7 @@ def setup(self) -> None:
3029
line_edit = QtWidgets.QLineEdit(self)
3130
line_edit.resize(300, 30)
3231
line_edit.move(100, 50)
33-
line_edit.setEchoMode(QtWidgets.QLineEdit.Password)
32+
line_edit.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
3433

3534
eye_icon = QtGui.QIcon("../../Resources/Icons/FlatIcon-regular-rounded/eye.png")
3635
eye_crossed_icon = QtGui.QIcon(
@@ -44,17 +43,17 @@ def setup(self) -> None:
4443
@QtCore.Slot()
4544
def switch():
4645
"""切换明文/密码的槽函数"""
47-
if line_edit.echoMode() == QtWidgets.QLineEdit.Password:
48-
line_edit.setEchoMode(QtWidgets.QLineEdit.Normal)
46+
if line_edit.echoMode() == QtWidgets.QLineEdit.EchoMode.Password:
47+
line_edit.setEchoMode(QtWidgets.QLineEdit.EchoMode.Normal)
4948
action.setIcon(eye_icon)
5049
else:
51-
line_edit.setEchoMode(QtWidgets.QLineEdit.Password)
50+
line_edit.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
5251
action.setIcon(eye_crossed_icon)
5352

5453
action.triggered.connect(switch) # type: ignore
5554

5655
# 添加行为
57-
line_edit.addAction(action, QtWidgets.QLineEdit.TrailingPosition)
56+
line_edit.addAction(action, QtWidgets.QLineEdit.ActionPosition.TrailingPosition)
5857

5958

6059
if __name__ == "__main__":

03-QtWidgets-常用控件/04-QFrame-具边框控件的基类/01-QFrame-简介与创建.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
import sys
2-
3-
from PySide6 import QtWidgets
4-
51
"""
62
QFrame 是具有边框的控件的基类
73
官方文档:https://doc.qt.io/qtforpython/PySide6/QtWidgets/QFrame.html
@@ -12,14 +8,17 @@
128
139
构造函数中可以传入父控件与WindowFlags(见本项目05-03-01)
1410
.__init__(self, parent: Optional[QWidget] = None, f: Qt.WindowFlags = Default(Qt.WindowFlags))
15-
1611
"""
1712

13+
import sys
14+
15+
from PySide6 import QtWidgets
16+
1817

1918
class MyWidget(QtWidgets.QWidget):
2019
def __init__(self, *args, **kwargs):
2120
super().__init__(*args, **kwargs)
22-
self.setWindowTitle("空白测试模板")
21+
self.setWindowTitle("QFrame")
2322
self.resize(800, 600)
2423
self.setup_ui()
2524

@@ -30,7 +29,7 @@ def setup_ui(self) -> None:
3029
frame.move(200, 200)
3130

3231
# 设置风格与线宽
33-
frame.setFrameStyle(QtWidgets.QFrame.StyledPanel | QtWidgets.QFrame.Sunken)
32+
frame.setFrameStyle(QtWidgets.QFrame.Shape.StyledPanel | QtWidgets.QFrame.Shadow.Sunken)
3433
frame.setLineWidth(3)
3534

3635

03-QtWidgets-常用控件/04-QFrame-具边框控件的基类/02-QFrame-风格.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
import sys
2-
3-
from PySide6 import QtWidgets
4-
51
"""
62
QFrame 风格:形状、阴影、线宽
73
所有组合的视觉效果:https://doc.qt.io/qt-6/images/frames.png
@@ -35,14 +31,17 @@
3531
QFrame.Plain 边框与内容与周围处于同水平,没有任何3D效果
3632
QFrame.Raised 边框与内容浮起,使用当前的颜色组绘制亮处与阴影以实现3D效果
3733
QFrame.Sunken 边框与内容下沉,使用当前的颜色组绘制亮处与阴影以实现3D效果
38-
3934
"""
4035

36+
import sys
37+
38+
from PySide6 import QtWidgets
39+
4140

4241
class MyWidget(QtWidgets.QWidget):
4342
def __init__(self, *args, **kwargs):
4443
super().__init__(*args, **kwargs)
45-
self.setWindowTitle("空白测试模板")
44+
self.setWindowTitle("QFrame-风格")
4645
self.resize(800, 600)
4746
self.setup_ui()
4847

@@ -52,9 +51,9 @@ def setup_ui(self) -> None:
5251
frame.resize(200, 200)
5352
frame.move(200, 200)
5453

55-
# frame.setFrameStyle(QtWidgets.QFrame.Box | QtWidgets.QFrame.Raised)
56-
frame.setFrameShape(QtWidgets.QFrame.Panel)
57-
frame.setFrameShadow(QtWidgets.QFrame.Sunken)
54+
# frame.setFrameStyle(QtWidgets.QFrame.Shape.Box | QtWidgets.QFrame.Shadow.Raised)
55+
frame.setFrameShape(QtWidgets.QFrame.Shape.Panel)
56+
frame.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
5857
frame.setLineWidth(3)
5958

6059

03-QtWidgets-常用控件/06-QAbstractScrollArea-滚动区域的基类/05-QAbstractScrollArea-尺寸调整策略.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
import sys
2-
3-
from PySide6 import QtGui, QtWidgets
4-
51
"""
62
QAbstractScrollArea 尺寸调整策略
73
可以控制当视口尺寸改变时,滚动区域的尺寸如何调整的策略
@@ -14,9 +10,12 @@
1410
QAbstractScrollArea.AdjustIgnored 滚动区域行为与之前相同,不做任何调整(默认值)
1511
QAbstractScrollArea.AdjustToContents 滚动区域总是根据视口调整尺寸
1612
QAbstractScrollArea.AdjustToContentsOnFirstShow 滚动区域首次出现时根据视口调整尺寸
17-
1813
"""
1914

15+
import sys
16+
17+
from PySide6 import QtGui, QtWidgets
18+
2019

2120
class MyWidget(QtWidgets.QScrollArea):
2221
def __init__(self, *args, **kwargs):
@@ -34,10 +33,10 @@ def setup_ui(self) -> None:
3433

3534
def test_01(self) -> None:
3635
"""测试尺寸调整策略功能"""
37-
self.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored)
38-
# self.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
36+
# self.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.SizeAdjustPolicy.AdjustIgnored)
37+
self.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents)
3938
# self.setSizeAdjustPolicy(
40-
# QtWidgets.QAbstractScrollArea.AdjustToContentsOnFirstShow
39+
# QtWidgets.QAbstractScrollArea.SizeAdjustPolicy.AdjustToContentsOnFirstShow
4140
# )
4241

4342

03-QtWidgets-常用控件/08-TextEdit-文本编辑器与阅读器/01-QPlainTextEdit-纯文本编辑器/02-QPlainTextEdit-换行方式、只读.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
import sys
2-
3-
from PySide6 import QtGui, QtWidgets
4-
51
"""
62
QPlainTextEdit 换行方式、只读
73
@@ -40,11 +36,15 @@
4036
4137
.setReadOnly(ro: bool) 设置只读状态
4238
.isReadOnly() -> bool 返回是否开启了只读
43-
4439
"""
4540

41+
import sys
42+
43+
from PySide6 import QtWidgets
44+
from PySide6.QtGui import QTextOption
45+
4646
long_text = """Gatsby believed in the green light, the orgastic future that year by year recedes before us. \
47-
It eluded us then, but that's no matter--tomorrow we will run faster, stretch out our arms farther. . . . \
47+
It eluded us then, but that's no matter--tomorrow we will run faster, stretch out our arms farther... \
4848
And one fine morning----\nSo we beat on, boats against the current, borne back ceaselessly into the past."""
4949

5050

@@ -66,21 +66,25 @@ def setup_ui(self) -> None:
6666

6767
def test_01(self) -> None:
6868
"""测试自动换行功能"""
69+
6970
# 设置换行模式
70-
self.pte.setLineWrapMode(QtWidgets.QPlainTextEdit.WidgetWidth) # 自动换行(默认值)
71-
# self.pte.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap) # 关闭自动换行
71+
self.pte.setLineWrapMode(QtWidgets.QPlainTextEdit.LineWrapMode.WidgetWidth) # 自动换行(默认值)
72+
# self.pte.setLineWrapMode(QtWidgets.QPlainTextEdit.LineWrapMode.NoWrap) # 关闭自动换行
7273
print(self.pte.lineWrapMode()) # 获取换行模式
7374

7475
# 设置单词换行方式
75-
# self.pte.setWordWrapMode(QtGui.QTextOption.NoWrap) # 永不换行
76-
# self.pte.setWordWrapMode(QtGui.QTextOption.WordWrap) # 在单词间换行
77-
# self.pte.setWordWrapMode(QtGui.QTextOption.ManualWrap) # 同NoWrap
78-
# self.pte.setWordWrapMode(QtGui.QTextOption.WrapAnywhere) # 在任意位置换行,可能打断单词
79-
self.pte.setWordWrapMode(QtGui.QTextOption.WrapAtWordBoundaryOrAnywhere) # 尽可能单词间换行,否则任意换行
76+
# self.pte.setWordWrapMode(QTextOption.WrapMode.NoWrap) # 永不换行
77+
# self.pte.setWordWrapMode(QTextOption.WrapMode.WordWrap) # 在单词间换行
78+
# self.pte.setWordWrapMode(QTextOption.WrapMode.ManualWrap) # 同NoWrap
79+
# self.pte.setWordWrapMode(QTextOption.WrapMode.WrapAnywhere) # 在任意位置换行,可能打断单词
80+
self.pte.setWordWrapMode(
81+
QTextOption.WrapMode.WrapAtWordBoundaryOrAnywhere
82+
) # 尽可能单词间换行,否则任意换行
8083
print(self.pte.wordWrapMode()) # 获取单词换行方式
8184

8285
def test_02(self) -> None:
8386
"""测试只读模式功能"""
87+
8488
self.pte.setReadOnly(True) # 启用只读模式
8589
# self.pte.setReadOnly(False) # 关闭只读模式
8690
print(self.pte.isReadOnly()) # 获取只读状态

03-QtWidgets-常用控件/08-TextEdit-文本编辑器与阅读器/01-QPlainTextEdit-纯文本编辑器/08-QPlainText-案例-显示行号.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
import sys
2-
3-
from PySide6 import QtCore, QtWidgets
4-
51
"""
62
QPlainText 案例:显示行号
73
每当文本文档需要更新显示矩形时,会发射updateRequest信号,垂直滚动量作为参数传出
84
利用这个信号,可以编写行号、断点等功能
9-
105
"""
116

7+
import sys
8+
9+
from PySide6 import QtCore, QtWidgets
10+
1211

1312
class MyWidget(QtWidgets.QWidget):
1413
def __init__(self, *args, **kwargs):
@@ -24,7 +23,7 @@ def setup_ui(self) -> None:
2423
self.pte = QtWidgets.QPlainTextEdit(self)
2524
self.pte.resize(350, 400)
2625
self.pte.move(150, 80)
27-
self.pte.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) # 始终显示滚动条
26+
self.pte.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOn) # 始终显示滚动条
2827

2928
# 用于限制line_num_label位置尺寸的父控件
3029
line_num_widget = QtWidgets.QWidget(self)

03-QtWidgets-常用控件/09-Slider-滑块控件/02-QSlider-滑块控件/01-QSlider-简介与创建.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
import sys
2-
3-
from PySide6 import QtWidgets
4-
51
"""
62
QSlider 滑块控件
73
水平或垂直的滑块
@@ -11,6 +7,10 @@
117
相比于其抽象父类QAbstractSlider,主要是添加了刻度线功能
128
"""
139

10+
import sys
11+
12+
from PySide6 import QtWidgets
13+
1414

1515
class MyWidget(QtWidgets.QWidget):
1616
def __init__(self, *args, **kwargs):
@@ -27,7 +27,7 @@ def setup_ui(self) -> None:
2727
slider.resize(40, 200)
2828

2929
# 在两侧绘制刻度线
30-
slider.setTickPosition(QtWidgets.QSlider.TicksBothSides)
30+
slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksBothSides)
3131

3232

3333
if __name__ == "__main__":

03-QtWidgets-常用控件/09-Slider-滑块控件/02-QSlider-滑块控件/02-QSlider-刻度.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import sys
2-
3-
from PySide6 import QtWidgets
4-
from PySide6.QtCore import Qt
5-
61
"""
72
QSlider 刻度
83
@@ -13,17 +8,21 @@
138
.tickInterval() -> int 获取刻度线间隔
149
1510
16-
QSlider.TickPosition枚举值具体有如下数种
11+
QSlider.TickPosition 枚举值具体有如下数种
1712
https://doc.qt.io/qt-6/qslider.html#TickPosition-enum
18-
QSlider.NoTicks 不绘制任何刻度线,默认值
19-
QSlider.TicksBothSides 在滑块两侧都绘制刻度
20-
QSlider.TicksAbove 在水平滑块上方绘制
21-
QSlider.TicksBelow 在水平滑块下方绘制
22-
QSlider.TicksLeft 在垂直滑块左侧绘制
23-
QSlider.TicksRight 在垂直滑块右侧绘制
24-
13+
QSlider.TickPosition.NoTicks 不绘制任何刻度线,默认值
14+
QSlider.TickPosition.TicksBothSides 在滑块两侧都绘制刻度
15+
QSlider.TickPosition.TicksAbove 在水平滑块上方绘制
16+
QSlider.TickPosition.TicksBelow 在水平滑块下方绘制
17+
QSlider.TickPosition.TicksLeft 在垂直滑块左侧绘制
18+
QSlider.TickPosition.TicksRight 在垂直滑块右侧绘制
2519
"""
2620

21+
import sys
22+
23+
from PySide6 import QtWidgets
24+
from PySide6.QtCore import Qt
25+
2726

2827
class MyWidget(QtWidgets.QWidget):
2928
def __init__(self, *args, **kwargs):
@@ -40,14 +39,15 @@ def setup_ui(self) -> None:
4039
slider.resize(40, 200)
4140

4241
# 设置滑块刻度线位置
43-
slider.setTickPosition(QtWidgets.QSlider.TicksBothSides)
44-
# slider.setTickPosition(QtWidgets.QSlider.TicksAbove)
45-
# slider.setTickPosition(QtWidgets.QSlider.TicksBelow)
42+
slider.setOrientation(Qt.Orientation.Vertical) # 将滑块方向设置为垂直
43+
slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksBothSides)
44+
# slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksAbove)
45+
# slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksBelow)
4646

47-
# slider.setOrientation(Qt.Horizontal) # 将滑块方向设置为水平
47+
# slider.setOrientation(Qt.Orientation.Horizontal) # 将滑块方向设置为水平
4848
# slider.resize(200, 40)
49-
# slider.setTickPosition(QtWidgets.QSlider.TicksLeft)
50-
# slider.setTickPosition(QtWidgets.QSlider.TicksRight)
49+
# slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksLeft)
50+
# slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksRight)
5151

5252
# 设置刻度线间距,默认等于PageStep
5353
slider.setTickInterval(25)

0 commit comments

Comments
 (0)