pyqt5讲解8:容器QTabWidget,QStackedWidget,QDockWidget
QTabWidget
常用方法
方法 | 描述 |
---|---|
addTab() | 将一个控件添加到Tab控件的选项卡中 |
insertTab() | 将一个Tab控件的选项卡插入到指定的位置 |
removeTab() | 根据指定的索引删除Tab控件 |
setCurrentIndex() | 设置当前可见的选项卡所在的索引 |
setCurrentWidget() | 设置当前可见的界面 |
setTabBar() | 设置选项卡栏的小控件 |
setTabPosition() | 设置选项卡的位置 |
- | QTabWidget.North:显示在页面的上方 |
- | QTabWidget.South:显示在页面的下方 |
- | QTabWidget.West:显示在页面的左侧 |
- | - QTabWidget.East:显示在页面的右侧 |
setTabText() | 定义Tab选项卡的显示值 |
常用信号
信号 | 描述 |
---|---|
currentChanged | 切换当前页面时发射该信号 |
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *class TabDemo(QTabWidget):def __init__(self, parent=None):super(TabDemo, self).__init__(parent) self.tab1 = QWidget()self.tab2 = QWidget()self.tab3 = QWidget()self.addTab(self.tab1,"Tab 1")self.addTab(self.tab2,"Tab 2")self.addTab(self.tab3,"Tab 3")self.tab1UI()self.tab2UI()self.tab3UI()self.setWindowTitle("Tab 例子")def tab1UI(self):layout = QFormLayout()layout.addRow("姓名",QLineEdit())layout.addRow("地址",QLineEdit())self.setTabText(0,"联系方式")self.tab1.setLayout(layout)def tab2UI(self):layout = QFormLayout()sex = QHBoxLayout()sex.addWidget(QRadioButton("男")) sex.addWidget(QRadioButton("女"))layout.addRow(QLabel("性别"),sex)layout.addRow("生日",QLineEdit())self.setTabText(1,"个人详细信息")self.tab2.setLayout(layout)def tab3UI(self):layout=QHBoxLayout()layout.addWidget(QLabel("科目"))layout.addWidget(QCheckBox("物理"))layout.addWidget(QCheckBox("高数"))self.setTabText(2,"教育程度")self.tab3.setLayout(layout)if __name__ == '__main__':app = QApplication(sys.argv)demo = TabDemo()demo.show()sys.exit(app.exec_())
在这个例子中,一个表单的内容分为3组,每一组小控件都显示在不同的选项卡中,顶层窗口是一个QTabWidget控件,将三个选项卡添加进去
#创建3个选项卡小控件窗口self.tab1=QWidget()self.tab2=QWidget()self.tab3=QWidget()#将三个选项卡添加到顶层窗口中self.addTab(self.tab1, "Tab 1")self.addTab(self.tab2, "Tab 2")self.addTab(self.tab3, "Tab 3")
使用表单布局管理器,每个选项卡显示子表单的内容
self.setTabText(0,'联系方式')
self.setTabText(
QStackedWidget
QTackedWidget是一个堆栈窗口控件,可以填充一些小控件,但是同一时间只有一个小控件可以显示,QStackedWidget使用QStackedLayout布局。QSTackedWidget控件与QTabWidget类似,可以有效的显示窗口的控件
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore 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对象中填充了三个子控件self.stack=QStackedWidget(self)self.stack.addWidget(self.stack1)self.stack.addWidget(self.stack2)self.stack.addWidget(self.stack3)#水平布局,添加部件到布局中HBox=QHBoxLayout()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):# zhu表单布局,次水平布局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)def display(self,i):#设置当前可见的选项卡的索引self.stack.setCurrentIndex(i)
if __name__ == '__main__':app=QApplication(sys.argv)demo=StackedExample()demo.show()sys.exit(app.exec_())
在这个例子中,在QStackedWidget对象中填充了三个子控件
self.stack1=QWidget()self.stack2=QWidget()self.stack3=QWidget()#在QStackedWidget对象中填充了三个子控件self.stack=QStackedWidget(self)self.stack.addWidget(self.stack1)self.stack.addWidget(self.stack2)self.stack.addWidget(self.stack3)
每个子控件都可以有自己的布局,包含特定的表单元素,QStackedWidget控件不能在页面之间进行切换,它与当前选中的QListWidget控件中的选项进行连接
#创建列表窗口,添加条目self.leftlist=QListWidget()self.leftlist.insertItem(0,'联系方式')self.leftlist.insertItem(1,'个人信息')self.leftlist.insertItem(2,'教育程度')self.leftlist.currentRowChanged.connect(self.display)
将QListWidget的currentRowChanged信号与display()槽函数相关联,从而改变堆叠控件的视图
def display(self,i):#设置当前可见的选项卡的索引self.stack.setCurrentIndex(i)
QDockWidget
常用方法
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)#设置水平布局layout=QHBoxLayout()#实例化菜单栏bar=self.menuBar()#创建主菜单file,在其中添加子菜单file=bar.addMenu('File')file.addAction('New')file.addAction('Save')file.addAction('quit')#创建QDockWidget窗口(标题,自身窗口)self.items=QDockWidget('Dockable',self)#实例化列表窗口,添加几个条目self.listWidget=QListWidget()self.listWidget.addItem('Item1')self.listWidget.addItem('Item2')self.listWidget.addItem('Item3')self.listWidget.addItem('Item4')#在窗口区域设置QWidget,添加列表控件self.items.setWidget(self.listWidget)#设置dock窗口是否可以浮动,True,运行浮动在外面,自动与主界面脱离,False,默认浮动主窗口内,可以手动脱离self.items.setFloating(False)#设置QTextEdit为中央小控件self.setCentralWidget(QTextEdit())#将窗口放置在中央小控件的右侧self.addDockWidget(Qt.RightDockWidgetArea,self.items)self.setLayout(layout)self.setWindowTitle('Dock 例子')
if __name__ == '__main__':app=QApplication(sys.argv)demo=DockDemo()demo.show()sys.exit(app.exec_())
可以拖动
在这个例子中,顶层窗口是一个QMainWindow对象,QTextEdit对象是它的中央小控件
self.setCentralWidget(QTextEdit())
首先创造可停靠的窗口Item
self.items=QDockWidget('Dockable',self)
然后,在停靠窗口内添加QListWidget对象
self.listWidget=QListWidget()self.listWidget.addItem('Item1')self.listWidget.addItem('Item2')self.listWidget.addItem('Item3')self.listWidget.addItem('Item4')#在窗口区域设置QWidget,添加列表控件self.items.setWidget(self.listWidget)
最后,停靠窗口放置在中央小控件的右侧
self.addDockWidget(Qt.RightDockWidgetArea,self.items)
电气专业的计算机萌新,写博文不容易。如果你觉得本文对你有用,请点个赞支持下,谢谢。
pyqt5讲解8:容器QTabWidget,QStackedWidget,QDockWidget相关推荐
- python选项卡控件_python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与...
PyQt5选项卡控件QTabWidget简介 QTabWidget控件提供了一个选项卡和一个页面区域,默认显示第一个选项卡的页面,通过单击各选项卡可以查看对应的界面,如果在一个窗口中显示的输入字段很多 ...
- PyQt5高级界面控件之QDockWidget
使用PyQt5高级界面控件之QDockWidget实现主页面模块关闭与显示 前言 QDockWidget是一个可以停靠在QMainWindow内的窗口控件,它可以保持在浮动状态或者在指定位置作为子窗口 ...
- 实战PyQt5: 052-停靠窗口控件QDockWidget
QDockWidget简介 在很多桌面应用软件中,比如Qt的C++ IDE集成开发环境Qt Creater, 宇宙第一集成开发环境Visual Studio等工程软件,都使用了停靠窗口布局,这样做有一 ...
- pyqt5讲解13:图形与特效,设置窗口大小
一.窗口的风格 可以为每个QWidget都设置风格 setStyle(QStyle style) 获取当前平台支持的原有的QStyle样式 QstyleFactory.keys() 对QApplica ...
- pyqt5讲解2:QPushButton,QRadioButton,QCheckBox
按钮QPushButton 常用方法 描述 setCheckable() 设置按钮是否已经被选中,如果设置True,则表示按钮将保持已点击和释放状态 toggle() 在按钮状态之间进行切换 setI ...
- pyqt5讲解10:布局管理讲解大全
一.绝对布局 使用move(x,y)的方法. 绝对布局: 如果改变屏膜的大小,控件的位置不会发生变化, 不同 屏膜显示有区别 # -*- coding: utf-8 -*-'''[简介]PyQT5中A ...
- pyqt5讲解9:时间模块timer和网页交互
time 如果要在应用程序中周期性地进行某项操作,则需要用到QTimer定时器,QTimer类提供了重复的和单次的定时器.要使用定时器,需要先创建一个QTimer实例,将其timeout信号连接到相应 ...
- pyqt5讲解6:菜单栏,工具栏,状态栏
菜单栏QMenuBar 方法 描述 menuBar() 用于返回主窗口的QMenuBar对象 addMenu() 将菜单添加到菜单栏: addAction() 在菜单中进行添加某些操作: setEna ...
- pyqt5讲解5:窗口绘图类控件QPainter,QPen,QBrush,QPixmap
1.QPainter 常用方法 方法 描述 begin() 开始在目标设备上绘制 drawArc() 在起始角度和最终角度之间画弧 drawEliipse() 在一个矩形内画一个椭圆 drawLine ...
最新文章
- lnmp一键安装脚本
- mysql 账号权限过期_Mysql用户忘记密码及密码过期问题的处理方法
- yii2 请求外部api_微服务架构之「 API网关 」
- 一些Java面试技巧分享,你不能错过!
- 射命丸文 (Standard IO)
- 《像计算机科学家一样思考Python》——4.4 封装
- iOS 自定义字体设置
- 2019 第四季度计划
- upload.render多文件上传怎么实现一次性上传多个文件_照片和视频怎么检索?请使用属性查询...
- 刷机后IMEI丢失如何能刷回来
- AspNetPager常用属性及用法 / URLRewrite伪静态与AspNetPager分页控件的结合
- android手机分辨率,xDpi,yDpi,尺寸等各种相关物理参数
- Python 机器人学习手册:1~5
- ear的英语怎么念_ears用英语怎么读
- Vue3 + TS(一)- 邂逅Vue
- html实现鼠标悬停效果实现
- 工厂自动化的生产线属于计算机应用,计算机试题
- 问卷调查:vue element动态生成表单、表单校验以及表单提交
- c语言一维数组字符串数组初始化,一维数组的定义、初始化和引用
- 2020年HIT行业企业营收排行榜(转载)