PyQt4:动态地从dict创建许多按钮

时间:2013-07-02 12:13:56

标签: python python-2.7 dictionary pyqt pyqt4

我有一个包含大约25个键和值的字典。这些键中的每一个都将成为一个按钮。是否有动态方法将每个键设为按钮而不是为每个键键入代码?有点像:

for key in dict:
     ...
     QtGui.QPushButton(key, self)
     ...

我知道会有更多的代码。我只是想知道这样的事情是否会比单独输入每个人更麻烦。提前感谢您的帮助。

1 个答案:

答案 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_())