Python 如何在pyqt5中设置快捷方式,以便可以从字符串变量设置快捷方式?

Python 如何在pyqt5中设置快捷方式,以便可以从字符串变量设置快捷方式?,python,pyqt,pyqt5,keyboard-shortcuts,Python,Pyqt,Pyqt5,Keyboard Shortcuts,下面的代码不会激活快捷方式 print("hmmmmm",(s)) self.actionOpen.setShortcut(_translate("MainWindow", s)) 打印输出为 hmmmmm Ctrl+Y 但是如果我像这样直接刺 print("hmmmmm",(s)) self.actionOpen.setShortcut(_translate("MainWindow", "Ctrl+Y")) 快捷方式有效您确定s是字符串吗?\u translate(“主窗口”,s)的输出

下面的代码不会激活快捷方式

print("hmmmmm",(s))
self.actionOpen.setShortcut(_translate("MainWindow", s))
打印输出为

hmmmmm Ctrl+Y
但是如果我像这样直接刺

print("hmmmmm",(s))
self.actionOpen.setShortcut(_translate("MainWindow", "Ctrl+Y"))

快捷方式有效

您确定
s
是字符串吗?
\u translate(“主窗口”,s)
的输出是什么?你能分享一个吗?好的,请记住,
actionOpen
是设计器垃圾代码的一部分,如果你仔细看,它实际上只是
qtwidts.QAction
,那么如果你查找
QAction
,你会发现当你提供
Ctrl+Y时,它现在需要一个
QString
在调用Python/PyQt时,会为您将其转换为QString,但当您提供一个包含相同值的变量时,它不会将其转换为QString,因此无法执行您试图执行的操作(首先使用设计器是错误的做法)您必须将字符串转换为QString@DennisJensenPyQt5中没有
QString
,因此无法将任何内容转换为一个。在任何情况下,OP都使用
setShortcut
,它采用
QKeySequence
。此类定义了,这意味着可以将字符串传递给任何需要
QKeySequence
的API。因此,正如上面已经指出的,这里唯一感兴趣的是当OP运行代码时,
\u translate(“main window”,s)
返回的内容。如果需要,请提供help@DennisJensenOPs第二个(工作)示例看起来像是Qt Designer自动生成的代码。如果是这样,
\u translate
将是
QtCore.QCoreApplication.translate
的别名。然而,只有在翻译函数中使用字符串文字才真正有意义,因此OPs第一个示例看起来很可疑。如果
s
是Qt可以转换为
QKeySequence
的东西(例如字符串),那么代码应该是:
self.actionOpen.setShortcut
。如果仍然需要,则需要在其他地方翻译
s
的内容。