PyQt4 菜单操作以将新选项卡添加到 QTabWidget

Posted

技术标签:

【中文标题】PyQt4 菜单操作以将新选项卡添加到 QTabWidget【英文标题】:PyQt4 menu acction to add new tab to QTabWidget 【发布时间】:2013-11-08 15:50:47 【问题描述】:

我正在开发一个使用 python 和 PyQt4 用于 GUI 的小型应用程序。我想要完成的是拥有一个选项卡式 GUI,当用户单击菜单项时,所采取的操作会将选项卡添加到 QTabWidget。我目前无法采取行动来做这样的事情。我尝试过手动和使用 QT 设计器创建 GUI,但如果可能的话,我无法弄清楚如何获得将选项卡添加到 QTabWidget 的操作。这是我的python代码:

import sys
from PyQt4 import QtGui, uic

class TestGUI(QtGui.QMainWindow):
    def __init__(self):
        super(TestGUI, self).__init__()
        uic.loadUi('TEST.ui', self)
        self.show()

        self.actionAdd_Tab.triggered.connect(addTab)

def addTab():
    print 'This works'
    #Add new tab to GUI

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = TestGUI()
    sys.exit(app.exec_())

按下菜单项会在控制台打印“This works”,所以我知道它调用了 addTab() 函数,但我如何让它添加一个 Tab?

如果您想查看 .ui 文件是否有帮助,请告诉我

【问题讨论】:

【参考方案1】:

您的操作的处理程序需要创建一个选项卡标签,以及一个用于选项卡内容的小部件,以便可以将它们添加到选项卡小部件中。

首先,尝试这样的事情:

import sys
from PyQt4 import QtGui, uic

class TestGUI(QtGui.QMainWindow):
    def __init__(self):
        super(TestGUI, self).__init__()
        uic.loadUi('TEST.ui', self)
        self.actionAdd_Tab.triggered.connect(self.handleAddTab)

    def handleAddTab(self):
        contents = QtGui.QWidget(self.tabWidget)
        layout = QtGui.QVBoxLayout(contents)
        # add other widgets to the contents layout here
        # i.e. layout.addWidget(widget), etc
        self.tabWidget.addTab(contents, 'Tab One')

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = TestGUI()
    window.show()
    sys.exit(app.exec_())

【讨论】:

【参考方案2】:

QTabWidget的addTab()方法,巧合的是同名,增加了一个tab。

【讨论】:

我尝试在函数中使用它来添加新标签,但我得到'NameError: global name 'tabWidget' is not defined' @SethKoberg 您需要将其放入带有 self 参数的类中,然后使用 self.tabWidget 来引用 QTabWidget(假设您已在 UI 中如此命名)。基本上就像ekhumoro的解决方案。

以上是关于PyQt4 菜单操作以将新选项卡添加到 QTabWidget的主要内容,如果未能解决你的问题,请参考以下文章

将新的视图控制器添加到选项卡控制器

Dynamics CRM - 创建插件以将新的逻辑运算符添加到高级查找中

每次当前选项卡在 TabBar 颤动中更改时,如何将新页面添加到导航器堆栈?

php 添加此代码以将ACF字段添加到页面/帖子。务必检查wordpress仪表板顶部菜单中的屏幕选项

将选项卡添加到现有选项卡菜单

如何将选项卡“ALL”动态添加到菜单选项卡