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 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步