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
的内容。