【转】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 的值表示此控件为可伸缩控件。此实例中设定右部分割
窗为可伸缩控件,当整个对话框的宽度发生改变时,左部的文件编辑框宽度保持不变,右部的分割窗宽度随整
个对话框大小的改变进行调整。

posted @ 2014-11-18 11:39  jakey.chen  阅读(722)  评论(0)    收藏  举报