gpt4 book ai didi

python - 如何根据文件创建 QActions 及其信号

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:24 25 4
gpt4 key购买 nike

我正在使用 python3 和 PyQt4。我想创建一个带有操作的菜单,其数量根据数组而不同。我希望它们每个人都将保存在数组中的相应信息保存到一个变量中。创建可变数量的事件似乎是不可能的。那么我如何创建一个根据激活它的操作执行不同工作的事件呢?这是我的代码:

def buildLoadSettings(self):
self.settings = array
for i in range(len(self.settings)):
exec("self.settings" + str(i) + " = QtGui.QAction('" + self.settings[i][0] + "', self)")
exec("self.loadMenu.addAction(self.settings" + str(i) + ")")

我想将每个操作与一个事件连接起来,最后将“self.settings[i][1]”保存到变量“settings”中。抱歉我的新手问题。

最佳答案

尚不完全清楚您想要实现的目标,但有几个 API 应该会有所帮助。当然没有必要像现在一样使用丑陋的 exec 调用。

这里有一些想法:

  1. 使用QAction.setData()将一些数据与每个操作关联起来:

        for item in self.settings:
    action = QtWidgets.QAction(item[0], self)
    action.setData(item[1])
    self.loadMenu.addAction(action)
  2. 使用 QMenu.actions() 访问操作,而不是创建属性:

        action = self.loadMenu.actions()[2]
    print((action.text(), action.data()))
  3. 将插槽连接到 QMenu.triggered() 以在一个位置处理其所有操作:

        self.loadMenu.triggered.connect(self.handleLoadMenu)

    def handleLoadMenu(self, action):
    # "action" is the action that was clicked
    text = action.text()
    data = action.data()
    print('Action Clicked: ("%s", %s)' % (text, data))

附注:

如果您想动态获取/设置属性,请使用getattrsetattr:

    # self.settings2 = action
setattr(self, "settings%s" % 2, action)
# action = self.settings2
action = getattr(self, "settings%s" % 2)

关于python - 如何根据文件创建 QActions 及其信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40854799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com