我有一个包含大约25个键和值的字典。这些键中的每一个都将成为一个按钮。是否有动态方法将每个键设为按钮而不是为每个键键入代码?有点像:
for key in dict:
...
QtGui.QPushButton(key, self)
...
我知道会有更多的代码。我只是想知道这样的事情是否会比单独输入每个人更麻烦。提前感谢您的帮助。
答案 0 :(得分:3)
当然试试这个:
from PyQt4 import QtGui, QtCore
from functools import partial
class Window(QtGui.QWidget):
def __init__(self, mapping):
QtGui.QWidget.__init__(self)
layout = QtGui.QVBoxLayout(self)
self.buttons = []
for key, value in mapping.items():
self.buttons.append(QtGui.QPushButton(key, self))
self.buttons[-1].clicked.connect(partial(handleButton, data=value))
layout.addWidget(self.buttons[-1])
def handleButton(self, data="\n"):
print (data)
if __name__ == '__main__':
import sys
buttons = {'foo': 'bar', 'something': 'other'}
app = QtGui.QApplication(sys.argv)
window = Window(buttons)
window.show()
sys.exit(app.exec_())