PySide2学习记录(六):复杂界面
Python版本3.7
PySide2 Version: 5.14.1
官方文档:http://doc.qt.io/qtforpython/index.html
想要实现功能强大,复杂的界面,就需要借助于QMainWindow
,下面是一个例子,仅仅只有界面,并没有连接相关信号与槽。
from PySide2.QtWidgets import QApplication, QMainWindow, QToolBar, \
QStatusBar, QAction, QCommonStyle, QDockWidget, QCalendarWidget, QWidget, QListView
from PySide2.QtGui import QIcon
from PySide2.QtCore import Qt
app = QApplication()
mainwindow = QMainWindow()
# 设置界面最小尺寸
mainwindow.setMinimumSize(900, 600)
# 创建工具栏对象
tool_bar = QToolBar()
open_dir_action = QAction(QIcon(QCommonStyle().standardPixmap(QCommonStyle.SP_DirIcon)), '打开目录')
tool_bar.addAction(open_dir_action)
open_file_action = QAction(QIcon(QCommonStyle().standardPixmap(QCommonStyle.SP_FileIcon)), '新建文件')
tool_bar.addAction(open_file_action)
open_delete_action = QAction(QIcon(QCommonStyle().standardPixmap(QCommonStyle.SP_TrashIcon)), '删除')
tool_bar.addAction(open_delete_action)
dock_calendar_widget = QDockWidget()
dock_calendar_widget.setWidget(QCalendarWidget())
dock_listview_widget = QDockWidget()
dock_listview_widget.setWidget(QListView())
# 添加在dock widgets区域的右边,Qt是一个包含了各种常量的包
mainwindow.addDockWidget(Qt.RightDockWidgetArea, dock_calendar_widget)
mainwindow.addDockWidget(Qt.RightDockWidgetArea, dock_listview_widget)
# 添加一个空的widget
mainwindow.setCentralWidget(QWidget())
# 创建状态栏对象
statusbar = QStatusBar()
statusbar.showMessage('我是statusbar')
# 添加工具栏
mainwindow.addToolBar(tool_bar)
# 添加状态栏
mainwindow.setStatusBar(statusbar)
mainwindow.show()
app.exec_()
运行截图:
图1首先需要分析QMainWindow
的布局。
结合图二和图一,图一中的1号就是Toolbars区域,这块区域是可以拖动的,2号对应着Central Widget区域,这里一般放置主要的widget,3号对应着Status Bar,这里常常是提示用户的文字,4号对应着Dock Widgets区域,这里上下左右都是可以放置,我是放在了右边,并且这块区域可以单独拖拽出来并关闭的。还有Menu Bar就是菜单栏,windows上是在标题栏下面,linux和MacOS在最顶上。
QToolBar
用于管理工具栏相关的类(注意是可以拖动调整位置的)。一般使用addAction()
函数进行添加,有以下几种添加方式:
addAction(action)
传入一个QAction
对象进行添加。本文所用的就是这个方式。
addActions(actions)
传入一个包含QAction
对象的列表进行添加。
addAction(text)
传入一个文本,内部会以这个文本创建一个QAction
对象,然后返回给你。
addAction(icon, text)
传入一个QIcon
对象(管理图标的类,可以使用QIcon("image.jpg")来创建一个自定义的图标)和一个文本来创建,同样会返回创建好的QAction
对象。
其中使用到了QCommonStyle
,这个类是用于管理公共风格的类,比如按钮在不同系统中就有不同的外观。
QAction
一般在菜单栏和工具栏,还有右键菜单都会使用这个类,具体描述建议看官方解释。
QDockWidget
装载一个widget,以便可以利用QDockWidget
对象放入到mainwindow中的dock widgets区域,并且可以浮动在窗口的顶层。
QStatusBar
状态栏对象,用于显示各种状态信息和提示信息。
QCalendarWidget
日历控件,方便用户进行时间的选择,具体使用方法参考官方手册。
QListView
用于显示列表的控件,以后再详细看。
还有setCentralWidget
用于设置中心区域的widget,我这里为了方便直接使用了一个空widget来进行填充。
友情链接:
QMainWindow
QToolBar
QAction
QStyle
QIcon
QDockWidget
QStatusBar
QCalendarWidget