【转】PyQt4 精彩实例分析 实例 14 分割窗口
分割窗口是应用程序中经常用到的,它可以灵活分布窗口的布局,经常用于类似文件资源管理器的窗口设计
中。本实例实现一个分割窗口使用的例子,实现的效果图如下。

整个对话框由 3 个窗口组成,各个窗口之间的大小可随意拖动改变。此实例使用 QSplitter 类来实现,实现
代码如下所示:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 from PyQt4.QtGui import * 5 from PyQt4.QtCore import * 6 import sys 7 8 QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8")) 9 10 class SplitterWidget(QMainWindow): 11 def __init__(self, parent=None): 12 super(SplitterWidget, self).__init__(parent) 13 self.setWindowTitle("Splitter") 14 15 font = QFont(self.tr("黑体"), 12) 16 QApplication.setFont(font) 17 18 mainSplitter = QSplitter(Qt.Horizontal, self) 19 20 leftText = QTextEdit(self.tr("左窗口"), mainSplitter) 21 leftText.setAlignment(Qt.AlignCenter) 22 23 rightSplitter = QSplitter(Qt.Vertical, mainSplitter) 24 rightSplitter.setOpaqueResize(False) 25 26 upText = QTextEdit(self.tr("上窗口"), rightSplitter) 27 upText.setAlignment(Qt.AlignCenter) 28 29 bottomText = QTextEdit(self.tr("下窗口"), rightSplitter) 30 bottomText.setAlignment(Qt.AlignCenter) 31 32 mainSplitter.setStretchFactor(1, 1) 33 mainSplitter.setWindowTitle(self.tr("分割窗口")) 34 35 self.setCentralWidget(mainSplitter) 36 37 38 def main(): 39 app = QApplication(sys.argv) 40 splitterWidget = SplitterWidget() 41 splitterWidget.show() 42 app.exec_() 43 44 if __name__ == '__main__': 45 main()
第 15-16 行指定显示的字体。
第 18 行定义一个 QSplitter 类对象,为主分割窗口,设定此分割窗为水平分割窜。
第 20 行定义一个 QTextEdit 类对象,并插入主分割窗口中。
第 21 行调用 setAlignment()方法,设定 TextEdit 中文字的对齐方式,常用的有以下几种。
Qt.AlignLeft:左对齐。
Qt.AlignRight:右对齐。
Qt.AlignCenter:文字居中(Qt.AlignHCenter 为水平居中,Qt.AlignVCenter 为垂直居中)。
Qt.AlignUp:文字与顶端对齐。
Qt.AlignBottom:文字与底部对齐。
第 24 行调用的方法 setOpaqueResize(boolean)用由设定分割窗的分割条在拖动时是否为实时更新显
示,若设为 True 则实时更新显示,若设为 False 则在拖动时只显示一条灰色的精线条,在拖动到位并弹起
鼠标后再显示分割条。默认设为 True,这和 Qt3 正好相反,Qt3 中默认为 False。
第 32 行 setStretchFactor()方法用于设定可伸缩控件,它的第一个参数指定设置的控件序号,控件序号
按插入的先后次序从 0 起依次编号,第二个参数大于 0 的值表示此控件为可伸缩控件。此实例中设定右部分割
窗为可伸缩控件,当整个对话框的宽度发生改变时,左部的文件编辑框宽度保持不变,右部的分割窗宽度随整
个对话框大小的改变进行调整。

浙公网安备 33010602011771号