Область полосы прокрутки PYQT5 не отображается в QTabWidget().addTabPython

Программы на Python
Anonymous
Область полосы прокрутки PYQT5 не отображается в QTabWidget().addTab

Сообщение Anonymous »


У меня возникла проблема с отображением полосы прокрутки, которую я создал для макетов вкладок. Если я вызываю их как функцию по отдельности, отображается полоса прокрутки, но я хочу, чтобы они отображались на созданных мной вкладках. Я тоже не использую QTDesigner, хочу попробовать написать код.

Я просмотрел некоторые вопросы с вкладками на сайте, но они не дали ответа на мой вопрос. Я решил попробовать и спросить.

Вот полный код:

из PyQt5, импорт QtCore из импорта PyQt5.QtWidgets * из PyQt5.QtCore импортировать Qt из импорта PyQt5.QtGui * импортировать систему из Feature_Class_List импортировать Feature_List импортировать панд как pd df = pd.read_csv('Категории.csv') df = df.fillna(0) fl = Feature_List() listm = fl.retrive_main_categories (df) списки = fl.sub_categories(df, listm) log_file = open('Log_progress.csv', 'w') класс Feature_Window(QMainWindow): защита __init__(сам): супер(Feature_Window, self).__init__() self.setWindowTitle("Инструмент журнала тестирования") self.setFixedHeight(400) self.label = QLabel('Выберите основную категорию', self) self.next_button = QPushButton("Журнал") self.next_button.clicked.connect(self.log_button_clicked) self.sub_tab_1 = self.sub_cate_ui_1() self.sub_tab_2 = self.sub_cate_ui_2() self.sub_tab_3 = self.sub_cate_ui_3() self.sub_tab_4 = self.sub_cate_ui_4() self.sub_tab_5 = self.sub_cate_ui_5() self.sub_tab_6 = self.sub_cate_ui_6() self.sub_tab_7 = self.sub_cate_ui_7() print("вызывается: функции подкатегории") self.layout_design() #self.sub_tab_1 = self.sub_cate_ui_1() себя.шоу() защита макета_дизайна (сам): left_layout = QVBoxLayout() left_layout.addWidget(self.label) #left_layout.addWidget(self.button_1) self.buttons = {} function_list = [self.main_category_button_1, self.main_category_button_2, self.main_category_button_3, self.main_category_button_4, self.main_category_button_5, self.main_category_button_6, self.main_category_button_7] список_кнопок = [] количество = len(список) для меня в диапазоне (количество): имя = списокм[я] self.buttons["кнопка" + str(i)] = QPushButton(имя) self.buttons["кнопка" + str(i)].setFont(QFont("Calibri", 10)) button_list.append(self.buttons["кнопка" + str(i)]) left_layout.addWidget(self.buttons["кнопка" + str(i)]) #self.buttons["button" + str(i)].clicked.connect(function_list[0]) для j в диапазоне (len(button_list)): button_list[j].clicked.connect(function_list[j]) print('ячейка: кнопки') self.button_widget = QWidget() #self.scroll_bar_func(self.button_widget, left_layout) ######ВТОРАЯ ВКЛАДКА############ self.right_widget = QTabWidget() self.right_widget.addTab(self.sub_tab_1, '') self.right_widget.addTab(self.sub_tab_2, '') self.right_widget.addTab(self.sub_tab_3, '') self.right_widget.addTab(self.sub_tab_4, '') self.right_widget.addTab(self.sub_tab_5, '') self.right_widget.addTab(self.sub_tab_6, '') self.right_widget.addTab(self.sub_tab_7, '') self.right_widget.setCurrentIndex(0) self.right_widget.setStyleSheet('''QTabBar::tab{width: 0; \height: 0; поля: 0; отступ: 0; граница: нет;}''') print('Добавить виджет вкладки под названием') ######МАКЕТ ТРЕТЬЕЙ ВКЛАДКИ########## self.last_tab_widget = QTextEdit() #self.last_tab_widget.tabBar() #self.last_tab_widget.addTab(self.last_tab_1, '') #self.last_tab_widget.setCurrentIndex(0) #self.last_tab_widget.setStyleSheet('''QTabBar::tab{width: 0; \height: 0; поля: 0; отступы: 0; граница: никто;}''') self.left_widget = QWidget() self.left_widget.setLayout(left_layout) self.main_layout = QHBoxLayout() self.main_layout.addWidget(self.left_widget) self.main_layout.addWidget(self.right_widget) #self.main_layout.addWidget(self.last_tab_widget) self.main_layout.addWidget(self.next_button, выравнивание = QtCore.Qt.AlignBottom | QtCore.Qt.AlignRight) self.main_widget = QWidget() self.main_widget.setLayout(self.main_layout) self.setCentralWidget(self.main_widget) вернуть self.main_widget print('Основной макет завершен') защита main_category_button_1 (сам): self.right_widget.setCurrentIndex(0) защита main_category_button_2 (сам): self.right_widget.setCurrentIndex(1) защита main_category_button_3 (сам): self.right_widget.setCurrentIndex(2) защита main_category_button_4 (сам): self.right_widget.setCurrentIndex(3) защита main_category_button_5 (сам): self.right_widget.setCurrentIndex(4) защита main_category_button_6 (self): self.right_widget.setCurrentIndex(5) защита main_category_button_7 (сам): self.right_widget.setCurrentIndex(6) защита sub_cate_ui_1 (сам): количество = len(списки[0]) основной = QWidget() self.scroll = QScrollArea() # Область прокрутки, содержащая виджеты, установленная как центральный виджет self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.scroll.setWidgetResizable(True) self.scroll.setGeometry(400, 400, 400, 400) self.scroll.setWidget(основной) self.setCentralWidget(self.scroll) s_layout = QVBoxLayout() #вертикальная компоновка для размещения элементов в вертикальном порядке для j в диапазоне (кол-во-1): label_name = списки[0][j] self.checkbox1 = QCheckBox(имя_метки, self) self.checkbox1.setFont(QFont("Калибри", 10)) s_layout.addWidget(self.checkbox1) self.checkbox1.stateChanged.connect(self.check_box_clicked) если self.checkbox1.checkState() == True: печать (имя_метки) #if self.checkbox.isChecked() == True: # print(имя_метки) main.setLayout(s_layout) print('Вызван макет подкатегории 1') вернуть основной защита sub_cate_ui_2 (сам): количество = len(списки[1]) s_layout = QVBoxLayout() #вертикальная компоновка для размещения элементов в вертикальном порядке основной = QWidget() self.scroll = QScrollArea() # Область прокрутки, содержащая виджеты, установленная как центральный виджет self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) #self.scroll.setWidgetResizable(True) self.scroll.setWidget(основной) self.setCentralWidget(self.scroll) для j в диапазоне (кол-во-1): label_name = списки[1][j] self.checkbox1 = QCheckBox(имя_метки, self) self.checkbox1.setFont(QFont("Калибри", 10)) s_layout.addWidget(self.checkbox1) self.checkbox1.stateChanged.connect(self.check_box_clicked) если self.checkbox1.checkState() == True: печать (имя_метки) #if self.checkbox.isChecked() == True: # print(имя_метки) main.setLayout(s_layout) вернуть основной защита sub_cate_ui_3 (сам): количество = len(списки[2]) s_layout = QVBoxLayout() #вертикальная компоновка для размещения элементов в вертикальном порядке основной = QWidget() self.scroll = QScrollArea() # Область прокрутки, содержащая виджеты, установленная как центральный виджет self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn) #self.scroll.setWidgetResizable(True) self.scroll.setWidget(основной) self.setCentralWidget(self.scroll) для j в диапазоне (кол-во-1): label_name = списки[2][j] self.checkbox1 = QCheckBox(имя_метки, self) self.checkbox1.setFont(QFont("Калибри", 10)) s_layout.addWidget(self.checkbox1) self.checkbox1.stateChanged.connect(self.check_box_clicked) если self.checkbox1.checkState() == True: печать (имя_метки) #if self.checkbox.isChecked() == True: # print(имя_метки) main.setLayout(s_layout) вернуть основной защита sub_cate_ui_4 (сам): количество = len(списки[3]) s_layout = QVBoxLayout() #вертикальная компоновка для размещения элементов в вертикальном порядке основной = QWidget() self.scroll = QScrollArea() # Область прокрутки, содержащая виджеты, установить как центральный виджет self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) #self.scroll.setWidgetResizable(True) self.scroll.setWidget(основной) self.setCentralWidget(self.scroll) для j в диапазоне (кол-во-1): label_name = списки[3][j] self.checkbox1 = QCheckBox(имя_метки, self) self.checkbox1.setFont(QFont("Калибри", 10)) s_layout.addWidget(self.checkbox1) self.checkbox1.stateChanged.connect(self.check_box_clicked) если self.checkbox1.checkState() == True: печать (имя_метки) #if self.checkbox.isChecked() == True: # print(имя_метки) main.setLayout(s_layout) вернуть основной защита sub_cate_ui_5 (сам): количество = len(списки[4]) s_layout = QVBoxLayout() #вертикальная компоновка для размещения элементов в вертикальном порядке основной = QWidget() self.scroll = QScrollArea() # Область прокрутки, содержащая виджеты, установленная как центральный виджет self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) #self.scroll.setWidgetResizable(True) self.scroll.setWidget(основной) self.setCentralWidget(self.scroll) для j в диапазоне (кол-во-1): label_name = списки[4][j] self.checkbox1 = QCheckBox(имя_метки, self) self.checkbox1.setFont(QFont("Калибри", 10)) s_layout.addWidget(self.checkbox1) self.checkbox1.stateChanged.connect(self.check_box_clicked) если self.checkbox1.checkState() == True: печать (имя_метки) #if self.checkbox.isChecked() == True: # print(имя_метки) main.setLayout(s_layout) вернуть основной защита sub_cate_ui_6 (сам): count = len(списки[5]) s_layout = QVBoxLayout() #вертикальная компоновка для размещения элементов в вертикальном порядке основной = QWidget() self.scroll = QScrollArea() # Область прокрутки, содержащая виджеты, установленная как центральный виджет self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) #self.scroll.setWidgetResizable(True) self.scroll.setWidget(основной) self.setCentralWidget(self.scroll) для j в диапазоне (кол-во-1): label_name = списки[5][j] self.checkbox1 = QCheckBox(имя_метки, self) self.checkbox1.setFont(QFont("Калибри", 10)) s_layout.addWidget(self.checkbox1) self.checkbox1.stateChanged.connect(self.check_box_clicked) если self.checkbox1.checkState() == True: печать (имя_метки) #if self.checkbox.isChecked() == True: # print(имя_метки) main.setLayout(s_layout) вернуть основной защита sub_cate_ui_7 (сам): count = len(списки[6]) s_layout = QVBoxLayout() #вертикальная компоновка для размещения элементов в вертикальном порядке основной = QWidget() self.scroll = QScrollArea() # Область прокрутки, содержащая виджеты, установленная как центральный виджет self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) #self.scroll.setWidgetResizable(True) self.scroll.setWidget(основной) self.setCentralWidget(self.scroll) для j в диапазоне (кол-во-1): label_name = списки[6][j] self.checkbox1 = QCheckBox(имя_метки, self) self.checkbox1.setFont(QFont("Калибри", 10)) s_layout.addWidget(self.checkbox1) self.checkbox1.stateChanged.connect(self.check_box_clicked) если self.checkbox1.checkState() == True: печать (имя_метки) #if self.checkbox.isChecked() == True: # print(имя_метки) main.setLayout(s_layout) вернуть основной защита Last_tab_ui_1 (сам): количество = len(списки[0]) s_layout = QVBoxLayout() #для j в диапазоне (count-1): # имя_метки = списки[0][j] # флажок = QCheckBox(имя_метки) # checkbox.setFont(QFont("Калибри", 10)) # s_layout.addWidget(флажок) s_layout.addStretch(50) основной = QWidget() main.setLayout(s_layout) вернуть основной защита check_box_clicked (сам): #self.checkbox.setCheckState(True) если self.checkbox.isChecked(): print(self.checkbox.setCheckState(True)) печать (self.checkbox.isChecked()) #проходить защита log_button_clicked (self): журнальный файл проходить если __name__ == "__main__": приложение = QApplication(sys.argv) окно = Feature_Window() #window.layout_design() окно.шоу() sys.exit(app.exec_()) Я ожидаю, что в этом графическом интерфейсе когда я нажимаю кнопки слева, вкладка изменится, и на изменяющейся вкладке появится полоса прокрутки. Я не думаю, что есть большая проблема с тем, как я устанавливаю полосу прокрутки в функциях вкладок (sub_cet_ui_1 и т. д.), однако подозреваю, что вызываю их неправильно.

Вернуться в «Python»