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相关推荐

  1. python选项卡控件_python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与...

    PyQt5选项卡控件QTabWidget简介 QTabWidget控件提供了一个选项卡和一个页面区域,默认显示第一个选项卡的页面,通过单击各选项卡可以查看对应的界面,如果在一个窗口中显示的输入字段很多 ...

  2. PyQt5高级界面控件之QDockWidget

    使用PyQt5高级界面控件之QDockWidget实现主页面模块关闭与显示 前言 QDockWidget是一个可以停靠在QMainWindow内的窗口控件,它可以保持在浮动状态或者在指定位置作为子窗口 ...

  3. 实战PyQt5: 052-停靠窗口控件QDockWidget

    QDockWidget简介 在很多桌面应用软件中,比如Qt的C++ IDE集成开发环境Qt Creater, 宇宙第一集成开发环境Visual Studio等工程软件,都使用了停靠窗口布局,这样做有一 ...

  4. pyqt5讲解13:图形与特效,设置窗口大小

    一.窗口的风格 可以为每个QWidget都设置风格 setStyle(QStyle style) 获取当前平台支持的原有的QStyle样式 QstyleFactory.keys() 对QApplica ...

  5. pyqt5讲解2:QPushButton,QRadioButton,QCheckBox

    按钮QPushButton 常用方法 描述 setCheckable() 设置按钮是否已经被选中,如果设置True,则表示按钮将保持已点击和释放状态 toggle() 在按钮状态之间进行切换 setI ...

  6. pyqt5讲解10:布局管理讲解大全

    一.绝对布局 使用move(x,y)的方法. 绝对布局: 如果改变屏膜的大小,控件的位置不会发生变化, 不同 屏膜显示有区别 # -*- coding: utf-8 -*-'''[简介]PyQT5中A ...

  7. pyqt5讲解9:时间模块timer和网页交互

    time 如果要在应用程序中周期性地进行某项操作,则需要用到QTimer定时器,QTimer类提供了重复的和单次的定时器.要使用定时器,需要先创建一个QTimer实例,将其timeout信号连接到相应 ...

  8. pyqt5讲解6:菜单栏,工具栏,状态栏

    菜单栏QMenuBar 方法 描述 menuBar() 用于返回主窗口的QMenuBar对象 addMenu() 将菜单添加到菜单栏: addAction() 在菜单中进行添加某些操作: setEna ...

  9. pyqt5讲解5:窗口绘图类控件QPainter,QPen,QBrush,QPixmap

    1.QPainter 常用方法 方法 描述 begin() 开始在目标设备上绘制 drawArc() 在起始角度和最终角度之间画弧 drawEliipse() 在一个矩形内画一个椭圆 drawLine ...

最新文章

  1. thinkPHP 模板的使用技巧(十三)
  2. c语言编程员工信息排序,员工工资管理系统(c语言编程)
  3. Qt 学习之路 2(80):定位器
  4. AUCAD自定义[2006.9.22]
  5. 软件工程之项目管理核心框架
  6. linux防火墙能阻止cc攻击吗,linux csf 防火墙 防止少量的ddos cc攻击很有效
  7. 后台处理客户端控件上传的文件(input type=file)
  8. python中for语法
  9. ex10_14输出素数
  10. Go语言实用用法大全
  11. 百度地图改变定位图标
  12. 梅花雨日历date.js
  13. 关于微信小程序授权登陆之后需要在个人信息页展示信息,如微信头像,昵称这件事
  14. [NOIP2020]微信步数
  15. 港科夜闻|香港科技大学(广州)与中国电信广东公司签署战略合作协议
  16. 安装mathtype时找不到文件mathpage.wil
  17. 单循环链表实现(设立尾指针)(第二章 P35)
  18. nginx实现ip端口转发_Nginx 实现端口转发
  19. 筋膜枪PCBA方案设计
  20. 领英如何在人脉圈公开档案更新,在人脉圈公开档案更新,如何高效利用好Linkedin

热门文章

  1. java判断字符串的值是否为0或者为空
  2. @RequestParam和@RequestBody
  3. 华硕老毛子(Padavan)——L2TP连接自动重连解决方案
  4. vue响应的res.data和res.data.data
  5. Java IO 之 管道流 原理分析
  6. MySQL 常用账户管理及授权操作
  7. 华为畅享9s可以升级鸿蒙吗,珍珠全面屏!华为畅享9S/9e正式发布:千元三摄加持...
  8. oracle sga 4031,Oracle ORA-4031错误产生的原因详解
  9. 不符合核销规则条件_对不起!您不符合2020年初级报考条件
  10. map比vo效率 mybatis_mybatis-plus插件使用的一些问题