我 的 个 人 主 页: 失心疯的个人主页
入 门 教 程 推 荐 : Python零基础入门教程合集
虚 拟 环 境 搭 建 : Python项目虚拟环境(超详细讲解)
PyQt5 系 列 教 程: Python GUI(PyQt5)文章合集
Oracle数据库教程: Oracle数据库文章合集
优 质 资 源 下 载 : 资源下载合集
描述
继承自:QFrame
效果图
功能作用
QSplitter(parent) # 创建QSplitter对象的同时设置父控件
QSplitter(Qt.Orientation, parent) # 创建指定布局方向QSplitter对象的同时设置父控件
# 参数 Qt.Orientation
# Qt.Horizontal # 水平方向
# Qt.Vertical # 垂直方向
setOrientation(Qt.Orientation) # 设置布局管理器布局方向
# 参数 Qt.Orientation
# Qt.Horizontal # 水平方向
# Qt.Vertical # 垂直方向
resize(int) # 设置QSplitter管理器大小
sizes(self) -> QSize # 获取QSplitter管理器的大小
setSizes(list: Iterable[int]) # 设置QSplitter管理器小部件的初始大小
# 需要在添加子控件之后设置才有效
saveState() # 保存小部件大小
restoreState() # 恢复小部件的大小
setStretchFactor(index, stretch) # 给指定索引小部件设置拉伸因子系数
# 小部件的宽度则为控件宽度*拉伸系数
addWidget(QWidget) # 添加控件到QSplitter管理器的布局中
insertWidget(index, QWidget) # 根据指定索引将控件插入到QSplitter管理器的布局中
replaceWidget(index, QWidget) -> QWidget # 将指定索引位置控件替换为指定控件
widget(index) -> QWidget # 获取指定索引位置子控件
indexOf(QWidget) -> int # 获取指定控件在QSplitter管理器中的索引
count() # 获取QSplitter管理器中子控件的数量
setOpaqueResize(bool) # 设置子控件是否跟随QSplitter管理器子部件大小调整
# 设置为False时,仅在调整大小操作结束时调整子控件的大小
可用信号
splitterMoved(pos: int, index: int) # 小部件边框移动时发射该信号,传递边框前小部件尺寸和边框后小部件索引
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QSplitter-功能演示')
self.resize(500, 300)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
spl = QSplitter(Qt.Horizontal, self)
frame_1 = QFrame()
frame_1.setFrameShape(QFrame.StyledPanel)
texte = QTextEdit()
texte2 = QTextEdit()
frame_2 = QFrame()
frame_2.setFrameShape(QFrame.StyledPanel)
cmb = QComboBox()
cmb.addItems(['湖南','湖北','广东','广西'])
# spl.setSizes([100, 400])
spl.addWidget(cmb)
spl.addWidget(texte)
# vlayout = QVBoxLayout()
# vlayout.addWidget(spl, 1)
# vlayout.addWidget(frame_2, 2)
# self.setLayout(vlayout)
vspl = QSplitter(Qt.Vertical, self)
vspl.addWidget(spl)
vspl.addWidget(frame_2)
hlayout = QHBoxLayout()
hlayout.addWidget(vspl)
self.setLayout(hlayout)
print(vspl.count())
spl.splitterMoved.connect(lambda v1,v2: print(v1, v2))
vspl.splitterMoved.connect(lambda v1,v2: print(v1, v2))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QSplitter-测试')
self.resize(500, 300)
self.widget_list()
def widget_list(self):
splitter1 = QSplitter(self)
splitter1.setOrientation(Qt.Horizontal)
splitter2 = QSplitter(self)
splitter2.setOrientation(Qt.Horizontal)
splitter3 = QSplitter(Qt.Vertical, self)
splitter1.resize(400, 200)
t1 = QTextEdit()
t2 = QTextEdit()
t3 = QTextEdit()
t4 = QTextEdit()
splitter1.addWidget(t1)
splitter1.addWidget(t2)
splitter2.addWidget(t3)
splitter2.addWidget(t4)
splitter1.setSizes([400, 100])
# 通过垂直布局添加两个横向QSplitter管理器,上下无法移动
vlayout = QVBoxLayout()
vlayout.addWidget(splitter1)
vlayout.addWidget(splitter2)
self.setLayout(vlayout)
# 通过垂直QSplitter管理器添加
# splitter3.addWidget(splitter1)
# splitter3.addWidget(splitter2)
print(splitter1.size())
splitter1.splitterMoved.connect(lambda v1, v2: print(v1, v2))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())