【转】PyQt4 精彩实例分析 实例 15 停靠窗口
本实例实现停靠窗口的基本使用方法,实现的效果图如下所示。
本实例实现的停靠窗口的可实现状态已在各窗口中进行了描述,停靠窗口 1 只可在主窗口的左边和右边停靠,
停靠窗口 2 只可在浮动和在右停靠两种状态间切换,并且不可移动,停靠窗口 3 可实现停靠窗口的各个状态。
具体状态此处不再一一用图示的方式列出,读者可自行运行代码进行试验。
具体实现代码如下:
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 MainWidget(QMainWindow): 11 def __init__(self,parent=None): 12 super(MainWidget,self).__init__(parent) 13 14 self.setWindowTitle(self.tr("依靠窗口")) 15 16 te = QTextEdit(self.tr("主窗口")) 17 te.setAlignment(Qt.AlignCenter) 18 self.setCentralWidget(te) 19 20 #停靠窗口 1 21 dock1 = QDockWidget(self.tr("停靠窗口 1"), self) 22 dock1.setFeatures(QDockWidget.DockWidgetMovable) 23 dock1.setAllowedAreas(Qt.LeftDockWidgetArea|Qt.RightDockWidgetArea) 24 te1 = QTextEdit(self.tr("窗口 1,可在 Main Window 的左部和右部停靠,不可浮动,不可关闭")) 25 dock1.setWidget(te1) 26 self.addDockWidget(Qt.RightDockWidgetArea, dock1) 27 28 #停靠窗口 2 29 dock2 = QDockWidget(self.tr("停靠窗口 2"), self) 30 dock2.setFeatures(QDockWidget.DockWidgetFloatable|QDockWidget.DockWidgetClosable) 31 te2 = QTextEdit(self.tr("窗口 2,只可浮动")) 32 dock2.setWidget(te2) 33 self.addDockWidget(Qt.RightDockWidgetArea, dock2) 34 35 #停靠窗口 3 36 dock3 = QDockWidget(self.tr("停靠窗口 3"), self) 37 dock3.setFeatures(QDockWidget.AllDockWidgetFeatures) 38 te3 = QTextEdit(self.tr("窗口 3,可在 Main Window 任意位置停靠,可浮动,可关闭")) 39 dock3.setWidget(te3) 40 self.addDockWidget(Qt.BottomDockWidgetArea, dock3) 41 42 def main(): 43 app = QApplication(sys.argv) 44 main = MainWidget() 45 main.show() 46 app.exec_() 47 48 if __name__ == '__main__': 49 main()
设置停靠窗口的一般流程为:
1)创建一个 QDockWidget 对象的停靠窗体。
2)设置此停靠窗体的属性,通常调用 setFeatures()及 setAllowedAreas()两个方法。
3)新建一个要插入停靠窗体的控件,本实例中为 QTextEdit,也可为其他控件,常用的一般为
QListWidget 和 QTextEdit。
4)把控件插入停靠窗体,调用 QDockWidget 的 setWidget()方法。
5)使用 addDockWidget()方法在 MainWindow 中加入此停靠窗体。