在我的Pyqt4程序中,我想更改某些按钮的快捷方式。因为我有很多想法通过用户输入访问按钮。我复制了相关的代码片段。
self.btn3 = QtGui.QPushButton(self)
b, ok = QtGui.QInputDialog.getText(self, 'Keyboard Mapping',
"Enter button number: ")
所以用户会输入“btn3”,然后在另一个输入对话框中指定新的快捷方式。最后,我想更改按钮快捷键,如下所示:
self.b.setShortcut(newkey)
我收到错误,我的QMainWindow类没有属性“b”。
是否无法在变量中存储实例?或者也许阅读变量或其他东西?如果你能帮助我,我会很高兴...
答案 0 :(得分:4)
这里的问题是当你执行b
时,python不会从self.b.setShortcut(newkey)
获取值,而只是查找名称b
。
您可以使用getattr()
执行所需操作:
getattr(self, b).setShortcut(newkey)
然而,这是不好的风格,通常会不安全并导致问题。相反,建立一个适合您需要的数据结构 - 这里创建一个字典是有意义的,例如:
self.widgets = {"btn3": QtGui.QPushButton(self)}
...
self.widgets[b].setShortcut(newkey)