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 sys
from 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 sys
from 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 -