【问题标题】:PyQt4 menu acction to add new tab to QTabWidgetPyQt4 菜单操作以将新选项卡添加到 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 文件是否有帮助,请告诉我

【问题讨论】:

    标签: python qt pyqt4 qtabwidget


    【解决方案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的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      相关资源
      最近更新 更多