1

使用 Python 和 PyQt4,给定一个带有任意数量 QToolBar 对象的 GUI,并且每个工具栏包含任意数量的 QAction 对象。

我可以使用以下代码迭代 ui 并找到工具栏:

for name, obj in inspect.getmembers(ui):
    if isinstance(obj, QToolBar):
        print "toolbar =",name

如何迭代每个工具栏对象并找到 QAction 对象。然后我将阅读 QActions 以确定哪些是“检查”的。我没有使用 QActionGroups。

4

2 回答 2

3

如果工具栏是在 Qt Designer 中创建的,它们将成为主窗口的子窗口(或任何顶级小部件)。

所以你可以简单地做:

for toolbar in mainwindow.findChildren(QToolBar):
    print('toolbar: %s' % toolbar.objectName())
    for action in toolbar.actions():
        if not action.isSeparator():
            print('  action: %s (%s)' % (action.text(), action.isChecked()))
于 2016-01-21T00:19:23.960 回答
2

给定一个 QToolBar,你可以通过调用它的actions方法找到它的所有 QActions:

返回此小部件操作的(可能为空)列表。

例如:

if isinstance(obj, QToolBar):
    print obj.actions()
于 2016-01-20T22:33:58.057 回答