Вы пытаетесь подключить сигнал currentChanged
от неправильного объекта.main_tab_object
- это QTabWidget, который излучает этот сигнал, но вы пытаетесь подключить этот сигнал от self.cc_tab
, QWidget на одной из вкладок.
Замените строку
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()
Затем вы подключаете сигнал currentChanged
QTabWidget к этой функции.
Вы правы, что QTabBar также имеет сигнал currentChanged
, но вы используетево втором комментарии, заменив QWidget()
на QTabBar()
в приведенном выше коде, вы не достигнете желаемого.
QTabBar действует только как панель, содержащая набор вкладок.(На самом деле, QTabWidget использует QTabBar внутри для своей панели вкладок.) Таким образом, размещение QTabBar в QTabWidget дает вам вкладки внутри вкладок.Я не верю, что это то, что вы хотите.Кроме того, я подозреваю, что вы не добавляете никаких вкладок в QTabBars.QTabBars действительно имеют сигнал currentChanged
, и ваш код будет правильно соединять эти сигналы, но эти сигналы никогда не сработают, потому что QTabBars не содержат вкладок для изменения.
Тот факт, что эти QTabBars сами могут находиться внутриQTabWidget не имеет значения.Они видят изменения только в собственном наборе вкладок и, следовательно, могут генерировать сигналы только для изменений в собственном наборе вкладок.