迭代PyQt中给定QToolBar对象的QAction项?

时间:2016-01-20 22:13:19

标签: python pyqt4 qaction qtoolbar

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

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

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

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

2 个答案:

答案 0 :(得分:2)

如果工具栏是在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()))

答案 1 :(得分:1)

鉴于QToolBar,您可以通过调用actions方法找到所有QA:

  

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

例如:

SELECT