參考博文: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_())