📂PYQT5
🔖Pyqt5
2019-07-01 19:50阅读: 7632评论: 0推荐: 0

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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类似,可以有效的显示窗口的控件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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类的主窗口对象保留一个用于停靠窗口的区域,这个区域在空间中央周围

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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_())

  

 

本文作者:spiderMan1-1

本文链接:https://www.cnblogs.com/cgy1995/p/11116344.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   spiderMan1-1  阅读(7632)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.