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 ...
最新文章
- thinkPHP 模板的使用技巧(十三)
- c语言编程员工信息排序,员工工资管理系统(c语言编程)
- Qt 学习之路 2(80):定位器
- AUCAD自定义[2006.9.22]
- 软件工程之项目管理核心框架
- linux防火墙能阻止cc攻击吗,linux csf 防火墙 防止少量的ddos cc攻击很有效
- 后台处理客户端控件上传的文件(input type=file)
- python中for语法
- ex10_14输出素数
- Go语言实用用法大全
- 百度地图改变定位图标
- 梅花雨日历date.js
- 关于微信小程序授权登陆之后需要在个人信息页展示信息,如微信头像,昵称这件事
- [NOIP2020]微信步数
- 港科夜闻|香港科技大学(广州)与中国电信广东公司签署战略合作协议
- 安装mathtype时找不到文件mathpage.wil
- 单循环链表实现(设立尾指针)(第二章 P35)
- nginx实现ip端口转发_Nginx 实现端口转发
- 筋膜枪PCBA方案设计
- 领英如何在人脉圈公开档案更新,在人脉圈公开档案更新,如何高效利用好Linkedin
热门文章
- java判断字符串的值是否为0或者为空
- @RequestParam和@RequestBody
- 华硕老毛子(Padavan)——L2TP连接自动重连解决方案
- vue响应的res.data和res.data.data
- Java IO 之 管道流 原理分析
- MySQL 常用账户管理及授权操作
- 华为畅享9s可以升级鸿蒙吗,珍珠全面屏!华为畅享9S/9e正式发布:千元三摄加持...
- oracle sga 4031,Oracle ORA-4031错误产生的原因详解
- 不符合核销规则条件_对不起!您不符合2020年初级报考条件
- map比vo效率 mybatis_mybatis-plus插件使用的一些问题