【问题标题】:PyQt - Tab Management from Outside ClassPyQt - 课堂外的标签管理
【发布时间】:2017-07-30 00:45:09
【问题描述】:

我正在使用 PyQt 设计一个应用程序来管理多个 Selenium 实例。每个实例都有一个带有唯一信息和控件的 QFrame,并且可以在主窗口中通过选项卡浏览。

class Instance(QFrame):

    def __init__(self):
        super().__init__()
        self.username = "whatever"

        ...

        self.startButton = QPushButton('Start')
        self.startButton.clicked.connect(lambda: self.engineStart())

        self.exitButton = QPushButton('Exit')
        self.exitButton.clicked.connect(lambda: self.engineExit())

        ...

它的样子

用户应该能够随意创建和删除实例。

创建标签没有问题。我有一个“+”按钮设置为QTabWidgetcornerWidget。它连接到一个简单的方法来添加标签。

class App(QFrame):

    def __init__(self):

        ...

    def addNewTab(self):
        t = Instance()
        self.tabs.addTab(t, t.username)

问题是,如何使用“内部”实例类中的“退出”按钮来删除从主窗口的“外部”类管理的选项卡?我需要打电话给removeTab()

【问题讨论】:

    标签: python pyqt qpushbutton qtabwidget


    【解决方案1】:

    要做你想做的事,你必须在主窗口中创建一个槽,并将其连接到按钮的 clicked 信号,如下所示:

    class App(QFrame):
    
        def __init__(self):
            ...
        def addNewTab(self):
            t = Instance()
            self.tabs.addTab(t, t.username)
            t.exitButton.clicked.connect(self.slot)
    
        def slot(self):
            self.tabs.removeTab(your_index)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多