PYQT 5学習(12)Qtabwidgetタブとそのウィンドウ、QstackedwidgetとQtabwidgetの効果は似ていて、システムトレイQsystemtrayIcon...

5502 ワード

参考文献:https://blog.csdn.net/jia666666/article/details/81669092QTabWidgetコントロールは1つのタブと1つのページ領域を提供し、デフォルトでは最初のタブを表示するページは各タブをクリックすることで対応するインタフェースを表示することができ、1つのウィンドウに入力語が多く表示されている場合は、これらのフィールドを分割して、それぞれ異なる境界面のタブに配置することができます.
プロセス: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はスタックウィンドウコントロールで、いくつかの小さなコントロールを埋め込むことができますが、同じ時間に1つの小さなコントロールしか表示できません.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_())

  
 
QockWidgetは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_())

  
 
転載先:https://www.cnblogs.com/cgy1995/p/11116344.html