PyQt5堆栈窗口及停靠区控件(PyQt5堆栈窗口及停靠区控件)
PyQt5堆栈窗口及停靠区控件(PyQt5堆栈窗口及停靠区控件)方法QDockWidget类常用方法是一个堆栈窗口控件,同一时间只能显示一个小控件。QStackedWidget使用QStackedLayout布局。import sysfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *class StackedExample(QWidget): def __init__(self): super(StackedExample self).__init__ self.setGeometry(300 50 10 10) self.setWindowTitle('StackedWidget 例子') self.leftlist = QListWidget self.leftlist.insertItem(0 '联系方式') self.left
文章:Python数据分析实例
作者:Brook
本次主要介绍PyQt5中堆栈窗口及停靠区控件。
01 StackedWidget堆栈控件
是一个堆栈窗口控件,同一时间只能显示一个小控件。QStackedWidget使用QStackedLayout布局。
StackedWidget堆栈窗口使用示例import sysfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *class StackedExample(QWidget): def __init__(self): super(StackedExample self).__init__ self.setGeometry(300 50 10 10) self.setWindowTitle('StackedWidget 例子') self.leftlist = QListWidget self.leftlist.insertItem(0 '联系方式') self.leftlist.insertItem(1 '个人信息') self.leftlist.insertItem(2 '教育程度') self.stack1 = QWidget self.stack2 = QWidget self.stack3 = QWidget self.stack1UI self.stack2UI self.stack3UI #QStackedWidget对象中填充3个子控件 self.Stack = QStackedWidget(self) self.Stack.addWidget(self.stack1) self.Stack.addWidget(self.stack2) self.Stack.addWidget(self.stack3) hbox = QHBoxLayout(self) hbox.addWidget(self.leftlist) hbox.addWidget(self.Stack) self.setLayout(hbox) self.leftlist.currentRowChanged.connect(self.display) def stack1UI(self): layout = QFormLayout layout.addRow("姓名" QLineEdit) layout.addRow("电话" QLineEdit) self.stack1.setLayout(layout) def stack2UI(self): layout = QFormLayout sex = QHBoxLayout sex.addWidget(QRadioButton("男")) sex.addWidget(QRadioButton("女")) layout.addRow(QLabel("性别") sex) layout.addRow("生日" QLineEdit) self.stack2.setLayout(layout) def stack3UI(self): layout = QHBoxLayout layout.addWidget(QLabel("学历")) layout.addWidget(QCheckBox("本科")) layout.addWidget(QCheckBox("硕士")) self.stack3.setLayout(layout) #将QListWidget的currentRowChanged信号与display槽函数关联 def display(self i): self.Stack.setCurrentIndex(i)if __name__ == '__main__': app = QApplication(sys.argv) demo = StackedExample demo.show sys.exit(app.exec_)

02 QDockWidget停靠区组件
是一个可以在QMainWindow窗口停留,或在桌面最上层浮动的界面组件。QDockWidget控件在主窗口内可以移动到新的区域。
QDockWidget类常用方法
|
方法 |
说明 |
|
setWidget |
在Dock窗口区域设置QWidget |
|
setFloating |
设置Dock窗口是否可以移动,如果设置为True,则表示可以浮动 |
|
setAllowedAreas |
设置窗口可以停靠的区域 1、LeftDockWidgetArea,左边停靠区域 2、RightDockWidgetArea,右边停靠区域 3、TopDockWidgetArea,顶部停靠区域 4、BottomDockWidgetArea,底部停靠区域 5、NoDockWidgetArea,不显示Widget |
|
setFeatures |
设置停靠窗口功能属性 1、DockWidgetClosable,可关闭 2、DockWidgetMovable,可移动 3、DockWidgetFloatable,可漂移 4、DockWidgetVerticalTitleBar,在左边显示垂直的标签栏 5、AllDockWidgetFeatures,具有前三种属性所有功能 6、NoDockWidgetFeatures,无法关闭,不能移动,不能漂移 |
import sysfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *class DockDemo(QMainWindow): def __init__(self parent=None): super(DockDemo self).__init__(parent) self.setWindowTitle("DockWidget 例子") layout = QHBoxLayout bar = self.menuBar #QMenu类表示菜单栏中的菜单,可以显示文本和图标,并不负责执行操作 File = bar.addMenu("File") file.addAction("New") file.addAction("save") file.addAction("quit") #创建可停靠窗口items, self.items = QDockWidget("Dockable" self) #items内添加QListWidget对象 self.listWidget = QListWidget self.listWidget.addItem("item1") self.listWidget.addItem("item2") self.listWidget.addItem("item3") self.items.setWidget(self.listWidget) self.items.setFloating(False) #添加QTextEdit对象控件 self.setCentralWidget(QTextEdit) self.addDockWidget(Qt.RightDockWidgetArea self.items) self.setLayout(layout)if __name__ == '__main__': app = QApplication(sys.argv) demo = DockDemo demo.show sys.exit(app.exec_)

以上为StackedWidget堆栈窗口和DockWidget停靠组件基础部分介绍,
后续介绍其综合示例。
- 合作、交流、转载请添加微信 moonhmily1 -




