PYQT5學習(12)Qtabwidget 選項卡及其窗口,Qstackedwidget和Qtabwidget的效果相似,以及系統托盤QsystemtrayIcon

參考博文: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_())
相關文章
相關標籤/搜索