gpt4 book ai didi

qt - 为什么不添加菜单?

转载 作者:行者123 更新时间:2023-12-04 12:59:25 24 4
gpt4 key购买 nike

我显然在这里遗漏了一些东西;为什么在这个小示例应用程序中没有添加文件菜单?

import sys
from PySide.QtGui import *

class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setWindowTitle('Test')
layout = QHBoxLayout()
self.widget = QWidget()
self.widget.setLayout(layout)
self.setCentralWidget(self.widget)
self.exitAction = QAction('Exit', self, shortcut=QKeySequence.Quit, triggered=self.close)
self.fileMenu = self.menuBar().addMenu('File')
self.fileMenu.addAction(self.exitAction)

app = QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())

编辑:

好的,看起来这实际上是一个 unicode 问题。
这是另一个示例应用程序:
from __future__ import unicode_literals, print_function, division
import sys
from PySide.QtCore import *
from PySide.QtGui import *

class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.dummyAction = QAction(self.tr('dummy'), self, triggered=self.dummy)
self.gameMenu = self.menuBar().addMenu(self.tr('ddddummy'))
print (self.tr('dummy'))
self.gameMenu.addAction(self.dummyAction)
layout = QHBoxLayout()
self.widget = QWidget()
self.widget.setLayout(layout)
self.setCentralWidget(self.widget)

def dummy(self):
pass

locale = QLocale.system().name()
qtTranslator = QTranslator()
app = QApplication(sys.argv)
if qtTranslator.load('qt_' + locale, ':/'):
app.installTranslator(qtTranslator)
w = Window()
w.show()
sys.exit(app.exec_())

这个应用程序没有"file"或“退出”或“退出”——但如果我注释掉 from __future__ 就可以了。行,或将带引号的字符串括起来,如 self.tr(str('foo'))而不是 self.tr('foo')
编辑2:
from __future__ import unicode_literals
import sys
from PySide.QtGui import *

class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
print self.tr('foo')

app = QApplication(sys.argv)
Window().show()
sys.exit(app.exec_())

这应该打印 'foo',但什么也不打印。

最佳答案

乍一看,您的代码似乎完全正常,并且在 windows 或 linux 上确实可以正常运行。这里的问题是在 OSX 上,操作系统在菜单上强制执行标准界面。而在其他操作系统上,菜单嵌套在您的应用程序下方,并且您的应用程序拥有它……在 OSX 上,操作系统拥有它。因此它显示在全局菜单区域中。

话虽如此,OSX 正在过滤掉一些保留关键字,如“退出”或“退出”。这样做的原因是退出功能是自动放置在您的应用程序菜单中的标准。当您将它作为基本的 Python 脚本运行时,菜单将被称为“Python”。但是如果你把它捆绑到一个应用程序中,它会根据你捆绑的应用程序相应地命名。

link here ,虽然不是一个确切的解释,但确实提到了 OSX 上菜单的差异。

有关修复菜单的快速示例,请查看执行以下操作时会发生什么:

    self.exitAction = QAction('Kwit', self)

OSX 不会过滤掉那个。但我认为最好遵循原生标准,使平台上的所有应用程序体验相同。您肯定会像现在一样包含“退出”菜单操作,这样如果在 linux 或 Windows 上运行您的应用程序将是跨平台的,并且只期望 OSX 会为您重新定位它。

关于qt - 为什么不添加菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11702621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com