0

在我的 Pyqt4 程序中,我想更改某些按钮的快捷方式。因为我有很多我想通过用户输入访问按钮。我复制了相关的代码片段。

    self.btn3 = QtGui.QPushButton(self)

    b, ok = QtGui.QInputDialog.getText(self, 'Keyboard Mapping', 
            "Enter button number: ")  

所以用户会,比如说,输入“btn3”,然后在另一个输入对话框中,他会指定新的快捷方式。最后,我想像这样更改按钮快捷方式:

    self.b.setShortcut(newkey)

我收到一个错误,我的 QMainWindow 类没有属性“b”。

有没有办法将实例存储在变量中?或者也许读取变量或什么?如果你能帮助我,我会很高兴...

4

1 回答 1

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)
于 2013-04-02T11:52:41.400 回答