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的布局。

图2

结合图二和图一,图一中的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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 温馨提示:本文较长,图片较多,本来是想写一篇 CSS 布局方式的,但是奈何 CSS 布局方式种类太多并且实现...
    sunshine小小倩阅读 3,205评论 0 59
  • 简介 CSS网格布局(又名“网格”)是一个二维的基于网格的布局系统,其目的只在于完全改变我们设计基于网格的用户界面...
    礼知白阅读 693评论 0 0
  • 网格线(Grid Line) 构成网格结构的分界线。它们既可以是垂直的(“列网格线(column grid lin...
    晚溪呀阅读 1,241评论 0 0
  • 简言 CSS网格布局(Grid)是一套二维的页面布局系统,它的出现将完全颠覆页面布局的传统方式。传统的CSS页面布...
    毛三十阅读 1,762评论 2 4
  • html标签在不同浏览器中都有不同的默认全局样式设置,CSS Reset清除默认样式: 依据产品整体需求设置。 C...
    april_Dong阅读 234评论 0 0