PyQt 界面设置与布局:菜单栏、工具栏、主体、提示栏布局
文章目录
- 一、菜单栏布局与事件绑定
-
- 1.1 一级菜单栏
- 1.2 多级菜单栏
- 1.3 菜单栏属性
- 二、工具栏布局
-
- 2.1 工具栏布局(左中右布局)
- 2.2 工具栏属性
- 三、主体布局(水平、垂直、网格、嵌套)
-
- 3.1 水平布局(QHBoxLayout)
- 3.2 垂直布局(QVBoxLayout)
- 3.3 网格布局(QGridLayout)
- 3.4 嵌套布局(三种布局嵌套)
- 四、状态栏
- 五、界面布局
-
- 5.1 大小策略(拉升时控件动态行为)
- 5.2 空白间距
- 5.3 拉伸因子(控件拉升空间分配)
- 5.4 对齐方式(控件、布局)
- 5.5 控件间距、边距、布局方向、布局比例
PyQt 提供了丰富的布局管理器和美化操作,可以帮助开发者轻松创建复杂的用户界面。通过合理使用布局管理器、拉伸因子、对齐方式、间距设置等功能,可以设计出美观且功能强大的应用程序界面。
一、菜单栏布局与事件绑定
1.1 一级菜单栏
# self为QMainWindow的窗口否则使用QMainWindow对应的对象MainWindw.menuBar()
self.MenuBar = MainWindw.menuBar() # MainWindw.menuBar()
# File
self.FileMenu = self.MenuBar.addMenu("File")
# File -> Open
self.OpenFile = QAction("Open", self)
self.FileMenu.addAction(self.OpenFile)
# File -> Close
self.CloseFile = QAction("Close", self)
self.FileMenu.addAction(self.CloseFile)
1.2 多级菜单栏
self.MenuBar = MainWindw.menuBar() # MainWindw.menuBar()
# File
self.SaveMenu = self.MenuBar.addMenu("File")
# File -> Save
self.SaveFile = self.SaveMenu.addMenu("Save")
# File -> Save -> Save txt
self.SaveTxt = QAction("Save txt", self)
self.SaveFile.addAction(self.SaveTxt)
# File -> Exit
self.Exit = QAction("Exit", self)
self.SaveMenu.addAction(self.Exit)
1.3 菜单栏属性
self.MenuBar = MainWindw.menuBar() # MainWindw.menuBar()
# 设置菜单栏宽度
self.MenuBar.setStyleSheet("QMenuBar {width: 100px;}")
# 获取菜单
for action in self.MenuBar.actions():
print(action.text())
self.FileMenu = self.MenuBar.addMenu("File")
self.Close = QAction("Close", self)
# 菜单栏事件绑定
self.Close.triggered.connect(self.close)
# 设置图标
self.Close.setIcon("icon.png")
# 添加快捷键
self.Close.setShortcut("Ctrl+S")
# 设置字体
font = QtGui.QFont('Arial', 10)
self.Close.setFont(font)
# 设置气泡
self.Close.setToolTip("Close")
self.FileMenu.addAction(self.Close)
实例
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QAction
# UI代码
class Ui_Form(object):
def setupUi(self, MainWindw):
MainWindw.setObjectName("Form")
MainWindw.resize(300, 200)
self.MenuBar = MainWindw.menuBar()
# 一级菜单栏
self.FileMenu = self.MenuBar.addMenu("File")
self.OpenFile = QAction("Open", self)
self.FileMenu.addAction(self.OpenFile)
self.FileMenu.addSeparator() # 添加分隔线
self.CloseFile = QAction("Close", self)
self.FileMenu.addAction(self.CloseFile)
# 多层菜单栏
self.SaveMenu = self.MenuBar.addMenu("Save") # 菜单栏
self.SaveFile = self.SaveMenu.addMenu("Save") # 一级菜单栏
self.SaveTxt = QAction("Save txt", self) # 二级菜单栏
self.SaveFile.addAction(self