【问题标题】:PyQt4: Create many buttons from dict dynamicallyPyQt4:从dict动态创建许多按钮
【发布时间】:2013-07-02 12:13:56
【问题描述】:

我有一个包含大约 25 个键和值的字典。这些键中的每一个都将成为一个按钮。是否有一种动态方法可以使每个键成为按钮,而不是为每个单独的键输入代码?大致如下:

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

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

【问题讨论】:

  • 可以的。但我建议在某处保留参考。

标签: python python-2.7 dictionary pyqt pyqt4


【解决方案1】:

一定要试试这个:

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

【讨论】:

  • 谢谢。现在会按照它们在字典中的相同顺序输出按钮吗?如果我想要一个特定的订单怎么办?
  • Nvm,我明白了。再次感谢。这正是我需要知道的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 1970-01-01
  • 2020-10-30
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多