<think>在PyQt5中,菜单栏(menu bar)通常位于窗口的顶部,这是标准做法。但是,用户要求将菜单栏显示在窗口的右下角。这并不常见,但我们可以通过一些布局技巧来实现类似的效果。
思路:
1. 通常,菜单栏是使用`QMenuBar`类创建的,默认情况下它位于主窗口的顶部。
2. 如果我们想将菜单栏放在右下角,我们可以尝试将菜单栏作为一个普通的控件(比如一个按钮或一个包含菜单的工具栏)放在布局的右下角。
但是,请注意:菜单栏(QMenuBar)本身是设计为放在窗口顶部的,并且它不支持直接放置在任意位置(如右下角)。因此,我们可以考虑以下替代方案:
方案一:使用QToolBar模拟菜单栏
- 在窗口的右下角放置一个QToolBar(工具栏),并在工具栏中添加一个按钮,点击按钮时弹出一个菜单(QMenu)。
- 这样,从用户角度看,右下角有一个按钮(或一个工具栏按钮),点击后出现菜单。
方案二:使用QPushButton配合QMenu
- 在窗口右下角放置一个QPushButton,点击按钮时弹出一个菜单。
方案三:自定义布局
- 如果我们希望有多个菜单项(像菜单栏一样有多个菜单),可以在右下角放置多个按钮,每个按钮代表一个菜单,点击后弹出对应的菜单。
这里我们采用方案一,因为工具栏可以包含多个动作(Action),并且可以设置工具栏的位置。
步骤:
1. 创建一个主窗口(QMainWindow)。
2. 在窗口的右下角添加一个工具栏(QToolBar),并设置工具栏的位置为底部(BottomToolBarArea)并右对齐(通过布局实现)。
3. 在工具栏中添加一个按钮(使用QAction),点击按钮时弹出菜单。
但是,注意:工具栏默认可以拖动,我们将其设置为不可移动,并固定在底部。然后通过布局将工具栏内的内容右对齐。
然而,工具栏默认是横向的,我们可以将其放在一个水平布局中,并添加弹簧(spacer)将按钮推到右边。
但是,实际上,我们可以不使用QMainWindow的工具栏区域,而是自己创建一个布局,在布局的右下角放置一个按钮(或工具栏控件)。这样更灵活。
因此,我们采用以下具体步骤:
1. 创建一个QWidget作为主窗口的中央部件(central widget),并设置一个布局(如QVBoxLayout)。
2. 在布局的底部,我们添加一个水平布局(QHBoxLayout),并在水平布局中添加一个弹簧(QSpacerItem)和一个工具栏(或者直接一个按钮)。
3. 工具栏(或按钮)放置在右下角。
但是,如果使用工具栏,我们可以添加多个菜单按钮。这里我们使用一个QToolBar,但将其作为一个普通的控件放入布局中(而不是使用QMainWindow的addToolBar方法)。
注意:QToolBar通常用于QMainWindow,但也可以放入布局中。不过,在布局中使用QToolBar可能不如在QMainWindow中那样有区域管理,但我们可以将其当作一个普通的水平容器。
另一种更简单的方法:不使用QToolBar,而是使用一个QWidget,里面放几个QPushButton,然后设置水平布局,并将这个QWidget放在主布局的右下角。
为了更接近菜单栏的效果,我们可以使用QPushButton来模拟菜单项,每个按钮点击后弹出一个菜单。
下面我们用一个示例代码来实现:在窗口右下角放置一个“菜单”按钮,点击按钮弹出菜单。
示例代码:
```python
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
QHBoxLayout, QPushButton, QMenu, QAction,
QSpacerItem, QSizePolicy)
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("右下角菜单示例")
self.setGeometry(100, 100, 800, 600)
# 设置中央部件
central_widget = QWidget()
self.setCentralWidget(central_widget)
# 主垂直布局
main_layout = QVBoxLayout(central_widget)
# 添加一个弹簧,将内容推到顶部
main_layout.addStretch(1)
# 底部水平布局(用于放置右下角按钮)
bottom_layout = QHBoxLayout()
# 在底部布局中添加一个水平弹簧,这样按钮就会在右边
bottom_layout.addStretch(1)
# 创建菜单按钮
self.menu_button = QPushButton("菜单")
self.menu_button.setFixedSize(80, 30)
# 创建菜单
self.popup_menu = QMenu(self)
action1 = QAction("选项1", self)
action2 = QAction("选项2", self)
action3 = QAction("退出", self)
action3.triggered.connect(self.close)
self.popup_menu.addActions([action1, action2, action3])
# 将菜单绑定到按钮
self.menu_button.setMenu(self.popup_menu)
# 将按钮添加到底部布局
bottom_layout.addWidget(self.menu_button)
# 将底部布局添加到主布局
main_layout.addLayout(bottom_layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
说明:
1. 我们创建了一个主窗口,中央部件使用QVBoxLayout。
2. 在垂直布局中,我们先添加一个弹簧(addStretch),这样后面的内容就会被推到最下面。
3. 然后添加一个水平布局(bottom_layout),在水平布局中添加一个弹簧(这样按钮就会在右边)和一个按钮。
4. 按钮设置了一个菜单(QMenu),当点击按钮时,菜单会弹出。
这样,按钮就显示在窗口的右下角了。
但是,如果我们希望有多个菜单按钮(比如“文件”、“编辑”、“帮助”等),我们可以创建多个按钮,每个按钮对应一个菜单,然后按顺序排列在右下角。
修改代码:创建多个按钮,并调整布局。
多按钮示例:
```python
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
QHBoxLayout, QPushButton, QMenu, QAction,
QSpacerItem, QSizePolicy)
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("右下角菜单示例")
self.setGeometry(100, 100, 800, 600)
# 设置中央部件
central_widget = QWidget()
self.setCentralWidget(central_widget)
# 主垂直布局
main_layout = QVBoxLayout(central_widget)
main_layout.addStretch(1) # 添加弹簧,将内容推到顶部
# 底部水平布局
bottom_layout = QHBoxLayout()
bottom_layout.addStretch(1) # 水平弹簧,将按钮推到右边
# 创建多个菜单按钮
buttons = ["文件", "编辑", "帮助"]
for button_text in buttons:
btn = QPushButton(button_text)
btn.setFixedSize(80, 30)
menu = QMenu(self)
# 为每个菜单添加几个选项
menu.addAction(f"{button_text}选项1")
menu.addAction(f"{button_text}选项2")
menu.addAction("退出").triggered.connect(self.close) # 注意:这里每个菜单的退出都会关闭窗口
btn.setMenu(menu)
bottom_layout.addWidget(btn)
main_layout.addLayout(bottom_layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
注意:上面的代码中,每个按钮的退出动作都连接到`self.close`,所以点击任何一个菜单的退出都会关闭窗口。
但是,这种实现方式与传统的菜单栏在视觉上还是有所不同,因为传统菜单栏是水平排列在顶部的,而这里我们是在右下角水平排列了几个按钮。
另外,我们也可以考虑使用QToolBar,将工具栏放在右下角:
使用工具栏的示例:
```python
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
QToolBar, QAction, QSizePolicy, QHBoxLayout,
QSpacerItem)
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("右下角工具栏菜单示例")
self.setGeometry(100, 100, 800, 600)
central_widget = QWidget()
self.setCentralWidget(central_widget)
main_layout = QVBoxLayout(central_widget)
main_layout.addStretch(1) # 弹簧
# 创建一个水平布局用于放置工具栏(并让工具栏在右边)
h_layout = QHBoxLayout()
h_layout.addStretch(1) # 水平弹簧
# 创建一个工具栏(作为普通控件)
toolbar = QToolBar()
toolbar.setToolButtonStyle(Qt.ToolButtonTextOnly) # 只显示文本
toolbar.setMovable(False) # 不可移动
# 添加菜单动作
file_action = QAction("文件", self)
edit_action = QAction("编辑", self)
help_action = QAction("帮助", self)
# 为每个动作创建菜单
file_menu = QMenu(self)
file_menu.addAction("新建")
file_menu.addAction("打开")
file_action.setMenu(file_menu)
edit_menu = QMenu(self)
edit_menu.addAction("撤销")
edit_menu.addAction("重做")
edit_action.setMenu(edit_menu)
help_menu = QMenu(self)
help_menu.addAction("关于")
help_action.setMenu(help_menu)
# 将动作添加到工具栏
toolbar.addAction(file_action)
toolbar.addAction(edit_action)
toolbar.addAction(help_action)
# 将工具栏添加到水平布局
h_layout.addWidget(toolbar)
main_layout.addLayout(h_layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
注意:在这个工具栏示例中,我们创建了一个QToolBar,然后添加了多个QAction,每个QAction都设置了一个QMenu。这样,点击工具栏上的动作(如“文件”)就会弹出对应的菜单。
总结:
虽然PyQt5的标准菜单栏(QMenuBar)通常位于窗口顶部,但我们可以通过使用按钮或工具栏来模拟菜单栏,并将其放置在窗口右下角。以上提供了三种实现方式,其中使用按钮和弹出菜单(QMenu)的方式最为简单直接,而使用工具栏则更接近传统菜单栏的外观。
请根据实际需求选择合适的方式。
注意:以上示例代码中的菜单按钮都位于右下角,但具体位置可以通过调整布局中的弹簧和布局策略来微调。
另外,如果希望菜单按钮在窗口右下角固定不动,还可以考虑使用QFrame和绝对定位,但使用布局管理器能更好地适应窗口大小的变化。
希望这能解决你的问题。</think># PyQt5 在窗口右下角添加菜单栏的实现方法
在 PyQt5 中实现窗口右下角的菜单栏需要一些技巧,因为标准菜单栏通常位于窗口顶部。下面我将介绍几种实现方法,并提供完整代码示例。
## 方法一:使用 QToolBar 模拟菜单栏
```python
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
QHBoxLayout, QPushButton, QMenu, QAction,
QToolBar, QSizePolicy, QLabel)
from PyQt5.QtCore import Qt
class RightBottomMenuWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("右下角菜单栏示例")
self.setGeometry(300, 300, 800, 600)
self.initUI()
def initUI(self):
# 创建中央部件
central_widget = QWidget()
self.setCentralWidget(central_widget)
# 主布局
main_layout = QVBoxLayout(central_widget)
# 添加内容标签
content_label = QLabel("主窗口内容区域", self)
content_label.setAlignment(Qt.AlignCenter)
content_label.setStyleSheet("font-size: 24px; color: #555;")
main_layout.addWidget(content_label, 1)
# 添加弹簧,将内容推向上方
main_layout.addStretch(1)
# 底部布局 - 用于放置右下角菜单
bottom_layout = QHBoxLayout()
# 添加水平弹簧,将菜单推到右侧
bottom_layout.addStretch(1)
# 创建工具栏作为菜单栏容器
self.menu_toolbar = QToolBar("右下角菜单")
self.menu_toolbar.setMovable(False) # 禁止移动
self.menu_toolbar.setOrientation(Qt.Vertical) # 垂直方向
# 创建菜单项
file_menu = QMenu("文件(&F)", self)
file_menu.addAction("新建(&N)")
file_menu.addAction("打开(&O)")
file_menu.addSeparator()
file_menu.addAction("退出(&Q)", self.close)
edit_menu = QMenu("编辑(&E)", self)
edit_menu.addAction("撤销(&Z)")
edit_menu.addAction("重做(&Y)")
edit_menu.addSeparator()
edit_menu.addAction("剪切(&X)")
edit_menu.addAction("复制(&C)")
edit_menu.addAction("粘贴(&V)")
help_menu = QMenu("帮助(&H)", self)
help_menu.addAction("关于(&A)")
# 创建菜单按钮
file_button = QPushButton("文件(&F)")
file_button.setMenu(file_menu)
file_button.setStyleSheet("QPushButton { padding: 5px 15px; }")
edit_button = QPushButton("编辑(&E)")
edit_button.setMenu(edit_menu)
edit_button.setStyleSheet("QPushButton { padding: 5px 15px; }")
help_button = QPushButton("帮助(&H)")
help_button.setMenu(help_menu)
help_button.setStyleSheet("QPushButton { padding: 5px 15px; }")
# 将按钮添加到工具栏
self.menu_toolbar.addWidget(file_button)
self.menu_toolbar.addWidget(edit_button)
self.menu_toolbar.addWidget(help_button)
# 将工具栏添加到底部布局
bottom_layout.addWidget(self.menu_toolbar)
# 添加底部布局到主布局
main_layout.addLayout(bottom_layout)
# 状态栏
self.statusBar().showMessage("就绪")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = RightBottomMenuWindow()
window.show()
sys.exit(app.exec_())
```
## 方法二:自定义 QWidget 作为菜单容器
```python
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
QHBoxLayout, QPushButton, QMenu, QAction,
QSizePolicy, QLabel, QFrame)
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette, QColor
class CustomMenuBar(QFrame):
def __init__(self, parent=None):
super().__init__(parent)
self.setStyleSheet("""
CustomMenuBar {
background-color: #f0f0f0;
border-top: 1px solid #cccccc;
border-left: 1px solid #cccccc;
border-top-left-radius: 5px;
}
""")
self.initUI()
def initUI(self):
layout = QHBoxLayout(self)
layout.setContentsMargins(5, 5, 5, 5)
# 文件菜单
file_button = self.create_menu_button("文件(&F)")
file_menu = QMenu(self)
file_menu.addAction("新建(&N)")
file_menu.addAction("打开(&O)")
file_menu.addSeparator()
file_menu.addAction("退出(&Q)", self.parent().close)
file_button.setMenu(file_menu)
# 编辑菜单
edit_button = self.create_menu_button("编辑(&E)")
edit_menu = QMenu(self)
edit_menu.addAction("撤销(&Z)")
edit_menu.addAction("重做(&Y)")
edit_menu.addSeparator()
edit_menu.addAction("剪切(&X)")
edit_menu.addAction("复制(&C)")
edit_menu.addAction("粘贴(&V)")
edit_button.setMenu(edit_menu)
# 视图菜单
view_button = self.create_menu_button("视图(&V)")
view_menu = QMenu(self)
view_menu.addAction("放大")
view_menu.addAction("缩小")
view_menu.addAction("重置缩放")
view_button.setMenu(view_menu)
# 帮助菜单
help_button = self.create_menu_button("帮助(&H)")
help_menu = QMenu(self)
help_menu.addAction("关于(&A)")
help_menu.addAction("帮助文档")
help_button.setMenu(help_menu)
# 添加到布局
layout.addWidget(file_button)
layout.addWidget(edit_button)
layout.addWidget(view_button)
layout.addWidget(help_button)
layout.addStretch(1) # 右侧弹簧
def create_menu_button(self, text):
button = QPushButton(text)
button.setStyleSheet("""
QPushButton {
background-color: #f8f8f8;
border: 1px solid #d0d0d0;
border-radius: 3px;
padding: 3px 10px;
margin-right: 5px;
}
QPushButton:hover {
background-color: #e8e8e8;
}
QPushButton::menu-indicator {
image: none;
}
""")
return button
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("自定义右下角菜单栏")
self.setGeometry(300, 300, 800, 600)
self.initUI()
def initUI(self):
# 创建中央部件
central_widget = QWidget()
self.setCentralWidget(central_widget)
# 主布局
main_layout = QVBoxLayout(central_widget)
main_layout.setContentsMargins(10, 10, 10, 0)
# 添加内容标签
content_label = QLabel("应用程序主内容区域", self)
content_label.setAlignment(Qt.AlignCenter)
content_label.setStyleSheet("""
QLabel {
font-size: 24px;
color: #444;
background-color: #f9f9f9;
border: 1px solid #e0e0e0;
border-radius: 5px;
padding: 20px;
}
""")
main_layout.addWidget(content_label, 1)
# 添加弹簧,将内容推向上方
main_layout.addStretch(1)
# 创建自定义菜单栏
self.custom_menu = CustomMenuBar(self)
# 添加自定义菜单栏到主布局
main_layout.addWidget(self.custom_menu)
# 状态栏
self.statusBar().showMessage("自定义右下角菜单栏已就绪")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
## 关键实现技巧
1. **布局管理**:
- 使用 `QVBoxLayout` 作为主布局
- 添加 `QStretch` 将内容推向上方
- 在底部使用 `QHBoxLayout` 容纳菜单栏
2. **位置控制**:
```python
# 在水平布局中添加弹簧,将菜单推到右侧
bottom_layout.addStretch(1)
bottom_layout.addWidget(menu_widget)
```
3. **样式定制**:
```css
/* 自定义菜单按钮样式 */
QPushButton {
background-color: #f0f0f0;
border: 1px solid #d0d0d0;
padding: 3px 10px;
margin: 2px;
}
```
4. **菜单弹出**:
```python
# 创建菜单并关联到按钮
file_menu = QMenu("文件菜单")
file_menu.addAction("新建")
file_button = QPushButton("文件(&F)")
file_button.setMenu(file_menu)
```
## 注意事项
1. **窗口大小变化**:
- 确保菜单栏在窗口大小变化时保持在右下角
- 使用布局管理器的弹性空间实现自适应
2. **菜单位置**:
- 弹出菜单默认出现在按钮下方
- 可以使用 `menu.popup()` 方法自定义弹出位置:
```python
# 自定义菜单弹出位置
button.clicked.connect(lambda: menu.popup(
button.mapToGlobal(button.rect().bottomLeft())
))
```
3. **与标准菜单栏共存**:
- 可以同时使用标准顶部菜单栏和自定义右下角菜单栏
- 右下角菜单栏适合放置辅助功能或上下文相关操作
## 完整示例:带状态指示的右下角菜单
```python
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
QHBoxLayout, QPushButton, QMenu, QAction,
QLabel, QStatusBar, QSizePolicy)
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QIcon
class AdvancedRightBottomMenu(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("高级右下角菜单示例")
self.setGeometry(300, 300, 800, 600)
self.initUI()
def initUI(self):
# 创建中央部件
central_widget = QWidget()
self.setCentralWidget(central_widget)
# 主布局
main_layout = QVBoxLayout(central_widget)
main_layout.setContentsMargins(10, 10, 10, 5)
# 添加内容区域
content_label = QLabel("应用程序主工作区", self)
content_label.setAlignment(Qt.AlignCenter)
content_label.setStyleSheet("""
QLabel {
font-size: 24px;
color: #333;
background-color: #f8f8f8;
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 40px;
}
""")
main_layout.addWidget(content_label, 1)
# 添加弹簧,将内容推向上方
main_layout.addStretch(1)
# 底部状态行
bottom_layout = QHBoxLayout()
bottom_layout.setContentsMargins(0, 5, 0, 0)
# 左侧状态信息
status_info = QLabel("系统状态: <font color='green'>正常</font>")
status_info.setStyleSheet("color: #666; font-size: 10pt;")
bottom_layout.addWidget(status_info)
# 添加弹簧,将菜单推到最右侧
bottom_layout.addStretch(1)
# 创建菜单按钮
self.file_button = self.create_menu_button("文件", "file.png")
self.edit_button = self.create_menu_button("编辑", "edit.png")
self.view_button = self.create_menu_button("视图", "view.png")
self.help_button = self.create_menu_button("帮助", "help.png")
# 创建菜单
self.create_menus()
# 添加到布局
bottom_layout.addWidget(self.file_button)
bottom_layout.addWidget(self.edit_button)
bottom_layout.addWidget(self.view_button)
bottom_layout.addWidget(self.help_button)
# 添加到底部布局
main_layout.addLayout(bottom_layout)
# 状态栏
self.statusBar().showMessage("就绪 | 右下角菜单已激活")
# 模拟状态更新
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_status)
self.timer.start(5000)
def create_menu_button(self, text, icon_name=None):
button = QPushButton(text)
button.setMinimumWidth(80)
button.setStyleSheet("""
QPushButton {
background-color: #f0f0f0;
border: 1px solid #d0d0d0;
border-radius: 3px;
padding: 5px 12px;
margin-left: 5px;
font-size: 10pt;
}
QPushButton:hover {
background-color: #e0e8f0;
border-color: #a0a0a0;
}
""")
return button
def create_menus(self):
# 文件菜单
file_menu = QMenu(self)
new_action = QAction(QIcon("new.png"), "新建", self)
open_action = QAction(QIcon("open.png"), "打开...", self)
save_action = QAction(QIcon("save.png"), "保存", self)
exit_action = QAction(QIcon("exit.png"), "退出", self)
exit_action.triggered.connect(self.close)
file_menu.addAction(new_action)
file_menu.addAction(open_action)
file_menu.addAction(save_action)
file_menu.addSeparator()
file_menu.addAction(exit_action)
self.file_button.setMenu(file_menu)
# 编辑菜单
edit_menu = QMenu(self)
edit_menu.addAction("撤销")
edit_menu.addAction("重做")
edit_menu.addSeparator()
edit_menu.addAction("剪切")
edit_menu.addAction("复制")
edit_menu.addAction("粘贴")
self.edit_button.setMenu(edit_menu)
# 视图菜单
view_menu = QMenu(self)
zoom_in = view_menu.addAction("放大")
zoom_out = view_menu.addAction("缩小")
view_menu.addSeparator()
view_menu.addAction("全屏模式")
self.view_button.setMenu(view_menu)
# 帮助菜单
help_menu = QMenu(self)
help_menu.addAction("帮助文档")
help_menu.addAction("在线支持")
help_menu.addSeparator()
about_action = help_menu.addAction("关于...")
about_action.triggered.connect(self.show_about)
self.help_button.setMenu(help_menu)
def show_about(self):
self.statusBar().showMessage("显示关于对话框", 3000)
# 实际应用中这里会显示一个关于对话框
def update_status(self):
self.statusBar().showMessage(f"状态更新: {QDateTime.currentDateTime().toString('hh:mm:ss')}")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = AdvancedRightBottomMenu()
window.show()
sys.exit(app.exec_())
```
## 常见问题解决
1. **菜单显示位置不正确**:
```python
# 手动设置菜单弹出位置
button.clicked.connect(lambda: menu.popup(
button.mapToGlobal(button.rect().bottomLeft())
))
```
2. **菜单栏遮挡内容**:
- 确保主布局中有足够的弹性空间
```python
main_layout.addWidget(content, 1) # 内容区域占1份空间
main_layout.addStretch(1) # 弹性空间占1份
```
3. **样式不统一**:
- 使用统一的样式表
- 考虑使用QStyle确保与系统主题一致
4. **响应窗口大小变化**:
```python
def resizeEvent(self, event):
# 窗口大小变化时更新菜单位置
self.update_menu_position()
super().resizeEvent(event)
```
通过以上方法,您可以在PyQt5应用程序中实现位于窗口右下角的菜单栏。这种布局特别适合需要保持主界面简洁的工具类应用,或需要将辅助功能放在不显眼位置的场景。