Python 在Pyqt中选择制表符时未发出信号

Python 在Pyqt中选择制表符时未发出信号,python,pyqt,pyqt4,tabbar,tabwidget,Python,Pyqt,Pyqt4,Tabbar,Tabwidget,我有一个选项卡小部件,其中有3个选项卡。我需要在更改选项卡时发出信号,查看pyQt文档currentChanged()是更改选项卡时发出的信号,但它对我不起作用。所以我需要你的帮助来理解这一点 我的代码如下: main_tab_widget = QTabWidget() #Creating Tabs self.run_tab = QWidget() self.cc_tab = QWidget() self.result_tab = QWidget()

我有一个选项卡小部件,其中有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)

编辑:无法使用信号/插槽机制将不同功能连接到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添加任何选项卡。qtabbar确实有
currentChanged
信号,您的代码将正确连接这些信号,但这些信号永远不会触发,因为qtabbar不包含要更改的选项卡


这些qtabbar本身可能位于QTabWidget内部这一事实与此无关。他们只看到自己标签集的更改,因此只能发出更改自己标签集的信号。

接受问题的答案被认为是一种良好的方式!考虑咨询。谢谢,但我想在不同的选项卡上调用不同的功能。但是上面的解决方案与tab_小部件绑定在一起,我希望它与tabs绑定在一起。基本上有3个功能用于3个选项卡。。我看了QTabar,它还说,当选项卡更改时,会发出currentChanged()信号。如果我错了,请纠正我。我尝试将选项卡定义为:self.run\u tab=QTabBar()self.cc\u tab=QTabBar()self.result\u tab=QTabBar()#将选项卡添加到TabWidget main\u tab\u widget.addTab(self.run\u tab,“run”)main\u tab\u widget.addTab(self.cc\u tab,“配置创建者”)main_tab_widget.addTab(self.result_tab,“Results”)并尝试连接到signal currentChanged(int),但即使这样也没有..哦。。谢谢你的详细解释。我现在更明白了。我将尝试建议的解决方案。。再次感谢你的帮助。
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()