参考博文:https://blog.csdn.net/jia666666/article/details/81669092
QTabWidget控件提供一个选项卡和一个页面区域,默认显示第一个选项卡的页面
经过点击各选项卡能够查看相应的界面,若是在一个窗口中显示输入字不少,则可
以对这些字段进行拆分,分别放置在不一样界面的选项卡中python
流程:1,建立一个QtabWidget
2.为选项卡对话框中的每一个页面建立一个QWidget,但不要为它们制定父窗口小部件
3,将子窗口的小部件插入到页面窗口小部件中,使用布局为其定位
4,调用addTab()或insertTab()将页面小部件放入选项卡小部件,为每一个选项
卡提供一个带有可选键盘快捷键的合适标签
app
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相似,能够有效的显示窗口的控件ui
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类的主窗口对象保留一个用于停靠窗口的区域,这个区域在空间中央周围url
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_())