pyqt5 菜单选项居中
时间: 2024-09-20 17:10:46 浏览: 55
在PyQt5中,如果你想让QMenuBar(菜单栏)中的菜单选项居中显示,你可以通过设置`menuBar()`的`addMenu()`方法添加菜单时,利用`setObjectName()`属性为其指定一个样式,并使用CSS来控制其布局。首先,在UI文件(.ui)中,添加菜单并设置它的样式:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QMenuBar
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 创建主窗口
self.setWindowTitle('My App')
self.setGeometry(100, 100, 800, 600)
# 创建菜单栏
menubar = QMenuBar(self)
menubar.setGeometry(Qt.TopLeftCorner, 0, 22, self.height())
menubar.setFixedHeight(22)
# 创建菜单项并居中设置
menu = menubar.addMenu('Menu')
menu.setObjectName('centered-menu') # 给菜单设定一个名称
action = QAction(QIcon('path_to_icon'), 'Option', self)
action.setCheckable(True) # 可选开关
action.triggered.connect(self.option_toggled) # 连接信号
menu.addAction(action)
# 使用CSS样式使其居中
styleheet = f"""
.centered-menu > * {{
text-align: center;
}}
"""
self.setStyleSheet(styleheet)
def option_toggled(self, checked):
print(f"Option is {'checked' if checked else 'unchecked'}")
if __name__ == '__main__':
app = QApplication([])
window = MyWindow()
window.show()
app.exec_()
```
在这个例子中,我们给菜单项添加了一个对象名`centered-menu`,然后在CSS样式表中设置了`.centered-menu > * {text-align: center;}`使其文本居中。当然,你需要替换`'path_to_icon'`为你实际的图标路径。
阅读全文