MacOS 上的 pyqt5 默认本机菜单文本
pyqt5 default native menu text on MacOS
有没有办法为简单的 pyqt5 应用更改 MacOS 上本机菜单的默认菜单标题?
我正在尝试更改上图中的“Python”菜单项。有没有办法重命名它?我能以某种方式隐藏它吗?
此代码仅打印“文件”:
menubar = self.menuBar()
for item in menubar.actions():
print(item.text())
menubar.setNativeMenuBar(False)
也无济于事(只需将“文件”移至主窗口)。
更新 示例应用程序代码:
from PyQt5 import QtCore, QtWidgets, uic
import sys
class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
# QtCore.QCoreApplication.setApplicationName('QtFoo') # doesn't work
uic.loadUi('App.ui', self)
self.show()
# app = QtWidgets.QApplication(sys.argv)
app = QtWidgets.QApplication(["MyCoolApp"])
# app.setApplicationName("QtFoo") # doesn't work
# app.setApplicationDisplayName("Display Name")
window = Ui()
app.exec()
系统菜单栏中的“python”是因为您运行脚本来自python,一旦您打包应用程序,标题就会消失。例如下面的代码
# FileName PyQt5MenuProblem.py
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow
class AppTest(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setWindowTitle("My application")
self._createMenuBar()
def _createMenuBar(self):
self.menuBar = self.menuBar()
self.menuBar.setNativeMenuBar(False)
fileMenu = self.menuBar.addMenu("&File")
editMenu = self.menuBar.addMenu("&Edit")
if __name__== "__main__":
app = QApplication(sys.argv)
plotWindow = AppTest()
plotWindow.showMaximized()
sys.exit(app.exec_())
用
打包后
pyinstaller --onefile PyQt5MenuProblem.py
关键词:MacOS,用户界面,LSUIElement,pyinstaller,pyqt5
如果您不愿意打包您的应用程序,您可以创建一个临时符号 link 到 python 作为 described here。此 link 可用于执行 python 应用程序,同时在标题栏中显示自定义名称:
在终端中转到您的应用程序(例如 my_app.py)文件的位置
创建符号 link(将位置替换为您的 python 解释器,将“BeautifulNaming”替换为所需的名称)
ln -s /Users/Christian/miniconda3/bin/python 美丽命名
用你的脚本调用 link 到 python
./BeautifulNaming my_app.py
有没有办法为简单的 pyqt5 应用更改 MacOS 上本机菜单的默认菜单标题?
我正在尝试更改上图中的“Python”菜单项。有没有办法重命名它?我能以某种方式隐藏它吗?
此代码仅打印“文件”:
menubar = self.menuBar()
for item in menubar.actions():
print(item.text())
menubar.setNativeMenuBar(False)
也无济于事(只需将“文件”移至主窗口)。
更新 示例应用程序代码:
from PyQt5 import QtCore, QtWidgets, uic
import sys
class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
# QtCore.QCoreApplication.setApplicationName('QtFoo') # doesn't work
uic.loadUi('App.ui', self)
self.show()
# app = QtWidgets.QApplication(sys.argv)
app = QtWidgets.QApplication(["MyCoolApp"])
# app.setApplicationName("QtFoo") # doesn't work
# app.setApplicationDisplayName("Display Name")
window = Ui()
app.exec()
系统菜单栏中的“python”是因为您运行脚本来自python,一旦您打包应用程序,标题就会消失。例如下面的代码
# FileName PyQt5MenuProblem.py
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow
class AppTest(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setWindowTitle("My application")
self._createMenuBar()
def _createMenuBar(self):
self.menuBar = self.menuBar()
self.menuBar.setNativeMenuBar(False)
fileMenu = self.menuBar.addMenu("&File")
editMenu = self.menuBar.addMenu("&Edit")
if __name__== "__main__":
app = QApplication(sys.argv)
plotWindow = AppTest()
plotWindow.showMaximized()
sys.exit(app.exec_())
用
打包后pyinstaller --onefile PyQt5MenuProblem.py
关键词:MacOS,用户界面,LSUIElement,pyinstaller,pyqt5
如果您不愿意打包您的应用程序,您可以创建一个临时符号 link 到 python 作为 described here。此 link 可用于执行 python 应用程序,同时在标题栏中显示自定义名称:
在终端中转到您的应用程序(例如 my_app.py)文件的位置
创建符号 link(将位置替换为您的 python 解释器,将“BeautifulNaming”替换为所需的名称)
ln -s /Users/Christian/miniconda3/bin/python 美丽命名
用你的脚本调用 link 到 python
./BeautifulNaming my_app.py