参考博文:https://blog.csdn.net/jia666666/article/details/81669092
QTabWidget控件提供一个选项卡和一个页面区域,默认显示第一个选项卡的页面
通过点击各选项卡可以查看相应的界面,如果在一个窗口中显示输入字很多,则可
以对这些字段进行拆分,分别放置在不同界面的选项卡中

流程:1,创建一个QtabWidget
2.为选项卡对话框中的每个页面创建一个QWidget,但不要为它们制定父窗口小部件
3,将子窗口的小部件插入到页面窗口小部件中,使用布局为其定位
4,调用addTab()或insertTab()将页面小部件放入选项卡小部件,为每个选项
卡提供一个带有可选键盘快捷键的合适标签

import sys
from PyQt5.QtWidgets import QWidget,QApplication,QGridLayout,QRadioButton,QVBoxLayout,QTabWidget,QFormLayout,QLabel,QLineEdit class Tab(QTabWidget):
def __init__(self):
super().__init__()
self.tab1=QWidget()
self.tab2=QWidget()
self.tab3=QWidget() self.addTab(self.tab1,'tab1')
self.addTab(self.tab2,'tab2')
self.addTab(self.tab3,'tab3') self.tab1UI()
self.tab2UI() def tab1UI(self):
tab1_lay=QGridLayout()
self.tab1.setLayout(tab1_lay) self.setTabText(0,'信息页')
label=QLabel('姓名:tom')
tab1_lay.addWidget(label,0,0) def tab2UI(self):
tab2_lay=QGridLayout()
self.tab2.setLayout(tab2_lay) self.setTabText(1,'第二页')
label=QLabel('姓名:tom')
tab2_lay.addWidget(label,0,0) class TabWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('demo')
self.setGeometry(300,300,300,200) #表单布局
layout=QFormLayout()
self.setLayout(layout) layout.addRow(QRadioButton('男'))
layout.addRow(QRadioButton('女')) tabwidget=Tab()
layout.addRow(tabwidget) if __name__=='__main__':
app=QApplication(sys.argv)
demo=TabWidget()
demo.show()
sys.exit(app.exec_())

 


 QStackedWidget:参考:https://blog.csdn.net/jia666666/article/details/81669425

QstackedWidget是一个堆栈窗口控件,可以填充一些小控件,但是同一时间只有一个小控件可以显示,QstackedWidget使用QstackedLayout布局,QstackedWidget和QTabWidget类似,可以有效的显示窗口的控件

import sys
from PyQt5.QtWidgets import QWidget,QStackedWidget,QListWidget,QApplication,QGridLayout,QRadioButton,QVBoxLayout,QTabWidget,QFormLayout,QLabel,QLineEdit class Stacked(QStackedWidget):
def __init__(self):
super().__init__() self.area1=QWidget()
self.area2=QWidget()
self.area3=QWidget()
self.addWidget(self.area1)
self.addWidget(self.area2)
self.addWidget(self.area3) self.area1UI()
self.area2UI() def area1UI(self):
layout=QFormLayout()
self.area1.setLayout(layout)
layout.addRow('name',QLineEdit())
def area2UI(self):
layout=QFormLayout()
self.area2.setLayout(layout)
layout.addRow('password',QLineEdit()) class StackedWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('demo')
self.setGeometry(300,300,300,200) #表单布局
layout=QFormLayout()
self.setLayout(layout) self.widget=Stacked()
layout.addRow(self.widget) list=QListWidget()
list.insertItem(0,'first1')
list.insertItem(1,'second')
list.insertItem(2,'three')
layout.addRow(list)
list.currentRowChanged.connect(self.showArea) def showArea(self,i):
self.widget.setCurrentIndex(i) if __name__=='__main__':
app=QApplication(sys.argv)
demo=StackedWidget()
demo.show()
sys.exit(app.exec_())

  


QDockWidget是一个可以停靠在QMainWindow内的窗口控件,它可以保持在浮动状态或在指定位置作为子窗口附加到主窗口中,QMainWindow类的主窗口对象保留一个用于停靠窗口的区域,这个区域在空间中央周围

import sys
from PyQt5.QtWidgets import QWidget,QTextEdit,QMainWindow,QSystemTrayIcon,QDockWidget,QStackedWidget,QListWidget,QApplication,QGridLayout,QRadioButton,QVBoxLayout,QTabWidget,QFormLayout,QLabel,QLineEdit
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
class DockWidget(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('demo')
self.setGeometry(300,300,300,200)
#设置系统托盘图标,获取托盘,设置托盘图标
tuopan=QSystemTrayIcon(self)
tuopan.setIcon(QIcon('new.png'))
tuopan.setToolTip('1111')
tuopan.show() dockwidget=QDockWidget('dockdemo',self) list=QListWidget()
list.insertItem(0,'第一')
list.insertItem(1,'第二')
list.insertItem(2,'第三')
list.insertItem(3,'第四') dockwidget.setWidget(list) #设置QdockWidget可浮动
# dockwidget.setFloating(True)
#设置中央控件为Qtextedit
text=QTextEdit()
self.setCentralWidget(text) #设置dockWidget放在右侧
self.addDockWidget(Qt.RightDockWidgetArea,dockwidget) if __name__=='__main__':
app=QApplication(sys.argv) demo=DockWidget()
demo.show()
sys.exit(app.exec_())

  

PYQT5学习(12)Qtabwidget 选项卡及其窗口,Qstackedwidget和Qtabwidget的效果类似,以及系统托盘QsystemtrayIcon的更多相关文章

  1. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件外观展示类属性elideMode、documentMode、tabBarAutoHide、tabShape介绍

    QTabWidget的外观展示类属性包括tabPosition.tabShape.elideMode.usesScrollButtons.documentMode.tabBarAutoHide和ico ...

  2. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件添加选项卡的addTab和insertTab方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTabWidget添加选项卡的方法可用使用addTab方法和insertTab方法. 1.增加选项 ...

  3. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件概述和属性介绍

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 TabWidget选项卡组件是一个带一到多个选项卡栏和对应页面区域的组件,对应类QTabW ...

  4. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件的tabBar、count、indexOf方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTabWidget的每个选项卡都有一个对应的页面部件对象,可用通过count方法获取选项卡个数,可 ...

  5. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件操作控制类属性movable和tabsClosable介绍

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTabWidget的操作控制类属性包括movable.tabsClosable这两个. 1. mo ...

  6. PyQt5学习笔记-从主窗体打开一个子窗体

    PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...

  7. Pyqt5学习笔记(一)

    Python已有的GUI框架: Tkinter(python内嵌的GUI环境,使用TCL实现,易学易用,方便简单创GUI自带无需安装,适用于Unix.Windows和Mac系统组,在Tk8.0的后续版 ...

  8. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

  9. Windows程序设计(第五版)学习:第三章 窗口与消息

        第三章 窗口与消息 1,windows窗口过程:应用程序所创建的每一个窗口都有一个与之关联的窗口过程,用于处理传递给窗口的消息. 2,窗口依据窗口类来创建.窗口类标识了用于处理传递给窗口的消息 ...

  10. ThinkPhp学习12

    原文:ThinkPhp学习12 二.输出模板内容      (重点) a.display 1.display中没有参数    $this->display(); 2.可以带参数    $this ...

随机推荐

  1. 万字长文讲透 RocketMQ 4.X 消费逻辑

    RocketMQ 是笔者非常喜欢的消息队列,4.9.X 版本是目前使用最广泛的版本,但它的消费逻辑相对较重,很多同学学习起来没有头绪. 这篇文章,笔者梳理了 RocketMQ 的消费逻辑,希望对大家有 ...

  2. 聊聊Cola-StateMachine轻量级状态机的实现

    背景 在分析Seata的saga模式实现时,实在是被其复杂的 json 状态语言定义文件劝退,我是有点没想明白为啥要用这么来实现状态机:盲猜可能是基于可视化的状态机设计器来定制化流程,更方便快捷且上手 ...

  3. Python异步编程之web框架 异步vs同步 Redis并发对比

    测试基本信息 主题:比较异步框架和同步框架在RedisIO操作的性能差异 python版本:python 3.8 数据库:redis 5.0.7 压测工具:locust web框架:同步:flask ...

  4. 基于picker封装的移动端简单实用选择器select插件

    基于picker封装的移动端简单实用选择器select插件; 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12797 效果图如 ...

  5. 【翻译】rocksdb write stall

    翻译自官方wiki:https://github.com/facebook/rocksdb/wiki/Write-Stalls 转载请注明出处:https://www.cnblogs.com/morn ...

  6. 多线程知识:三个线程如何交替打印ABC循环100次

    本文博主给大家讲解一道网上非常经典的多线程面试题目.关于三个线程如何交替打印ABC循环100次的问题. 下文实现代码都基于Java代码在单个JVM内实现. 问题描述 给定三个线程,分别命名为A.B.C ...

  7. spring-boot-plus2.7.12版本重磅发布,三年磨一剑,兄弟们等久了,感谢你们的陪伴

    Everyone can develop projects independently, quickly and efficiently! spring-boot-plus是一套集成spring bo ...

  8. Mysql基础5-用户及权限管理

    一.介绍 DCL:Data Control Language(数据控制语言),用来管理数据库用户,控制数据库的访问,权限. 二.用户管理 1.查询用户 语法: 1.use mysql; 2.selec ...

  9. 分别在Windows系统和Linux系统环境安装anaconda3和tensorflow

    Windows系统环境 一.安装anaconda 这里安装的是Anaconda3-2019.03-Windows-x86_64.exe(python3.7版本) 二.检查安装环境 1.若anacond ...

  10. 层叠样式表(CSS)1

    一.css的简介 1.层叠样式表的含义 层叠样式表:css是不仅是表现HTML的语言.还是进行样式修饰的语言 层叠:是对一个元素多次设置同一个样式,层层叠加覆盖,如不同的样式对一html标签进行修饰, ...