在 Pyqt 中选择选项卡时未发出信号



我创建了一个包含 3 个选项卡的选项卡小部件。当我更改选项卡时,我需要发出信号,查看pyQt文档currentChanged()是在更改选项卡时发出的信号,但它对我不起作用。所以需要你的帮助来理解同样的东西,

我的代码如下:

main_tab_widget = QTabWidget()
    #Creating Tabs
    self.run_tab = QWidget()
    self.cc_tab = QWidget()
    self.result_tab = QWidget()
    #Adding Tabs to Tab Widget
    main_tab_widget.addTab(self.run_tab, "RUN")
    main_tab_widget.addTab(self.cc_tab, "Config Creator")
    main_tab_widget.addTab(self.result_tab, "Result")
    #Layout Creation
    main_layout = QVBoxLayout()
    main_layout.addWidget(main_tab_widget)
    self.connect(self.cc_tab, SIGNAL('currentChanged(int)'), self.pseudofunction)
    self.RunTab()
    self.setLayout(main_layout)
    #self.configcreatortab()
    #self.resulttab()
def pseudofunction(self):
    print 'Inside Pseudo Function'

您正在尝试连接来自错误对象的currentChanged信号。 main_tab_object是发出此信号的 QTabWidget,但您正在尝试从其中一个选项卡中的 QWidget self.cc_tab连接此信号。

替换行

    self.connect(self.cc_tab, SIGNAL('currentChanged(int)'), self.pseudofunction)

    self.connect(main_tab_widget, SIGNAL('currentChanged(int)'), self.pseudofunction)

编辑:没有办法使用信号/插槽机制将不同的功能连接到QTabWidget的每个选项卡。 如果要在选择不同的选项卡时调用不同的函数,则必须编写另一个函数,该函数根据选择的选项卡调用相关函数。 例如:

def selector(self, selected_index):
    if selected_index == 0:
        self.some_function_for_run_tab()
    elif selected_index == 1:
        self.some_function_for_cc_tab()
    elif selected_index == 2:
        self.some_function_for_result_tab()

然后,您将 QTabWidget 的currentChanged信号连接到此功能。

您是正确的,QTabBar 也有currentChanged信号,但是您在第二条注释中对它的使用,通过在上面的代码中将QWidget()替换为QTabBar(),将无法实现您想要的。

QTabBar 仅充当包含选项卡集合的栏。 (事实上,QTabWidget 在内部使用 QTabBar 作为其选项卡栏。 因此,将QTabBar放在QTabWidget中会为您提供选项卡中的选项卡。 我不相信这是你想要的。 此外,我怀疑您没有向 QTabBar 添加任何选项卡。 QTabBars 确实具有currentChanged信号,并且您的代码将正确连接这些信号,但这些信号永远不会触发,因为 QTabBar 不包含要更改的选项卡。

这些 QTabBars 本身可能位于 QTabWidget 中这一事实无关紧要。 他们只能看到对自己的选项卡集的更改,因此只能触发对自己的选项卡集进行更改的信号。

相关内容

  • 没有找到相关文章

最新更新