changing the tab display in the main window
This commit is contained in:
		| @@ -10,7 +10,7 @@ import time | ||||
| import json | ||||
| import hashlib | ||||
| from functools import partial | ||||
| from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,QPushButton, QLabel, QTabWidget, | ||||
| from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,QPushButton, QLabel, QTabWidget, QTabBar, | ||||
|                              QTextEdit, QFileDialog, QMessageBox, QLineEdit, QCheckBox, QStackedWidget, QScrollArea, QFormLayout, QGroupBox, QRadioButton, QComboBox, | ||||
|                              QListWidget, QListWidgetItem, QGridLayout, QFrame, QDialog, QTextBrowser) | ||||
| from PyQt5.QtCore import Qt, QProcess, QSize, QTimer, QProcessEnvironment, QPropertyAnimation, QEasingCurve | ||||
| @@ -1275,19 +1275,26 @@ class WineHelperGUI(QMainWindow): | ||||
|         # Создаем главный виджет и layout | ||||
|         self.main_widget = QWidget() | ||||
|         self.setCentralWidget(self.main_widget) | ||||
|         self.main_layout = QHBoxLayout() | ||||
|         self.main_layout = QVBoxLayout() | ||||
|         self.main_widget.setLayout(self.main_layout) | ||||
|  | ||||
|         # Создаем табы | ||||
|         self.tabs = QTabWidget() | ||||
|         self.main_layout.addWidget(self.tabs, stretch=1) | ||||
|         # Создаем кастомную панель вкладок и виджет со страницами | ||||
|         self.tab_bar = QTabBar() | ||||
|         self.stacked_widget = QStackedWidget() | ||||
|         self.main_layout.addWidget(self.tab_bar) | ||||
|  | ||||
|         # Горизонтальный layout для страниц и инфо-панели | ||||
|         content_layout = QHBoxLayout() | ||||
|         content_layout.addWidget(self.stacked_widget, stretch=1) | ||||
|  | ||||
|         # Создаем панель информации о скрипте | ||||
|         self.create_info_panel() | ||||
|         self.main_layout.addWidget(self.info_panel, stretch=1) | ||||
|         content_layout.addWidget(self.info_panel, stretch=1) | ||||
|  | ||||
|         self.main_layout.addLayout(content_layout) | ||||
|  | ||||
|         # Фиксируем минимальные размеры | ||||
|         self.tabs.setMinimumWidth(520) | ||||
|         self.stacked_widget.setMinimumWidth(520) | ||||
|         self.info_panel.setMinimumWidth(415) | ||||
|  | ||||
|         # Вкладки | ||||
| @@ -1304,9 +1311,10 @@ class WineHelperGUI(QMainWindow): | ||||
|         self.update_installed_apps() | ||||
|  | ||||
|         # Соединяем сигнал смены вкладок с функцией | ||||
|         self.tabs.currentChanged.connect(self.on_tab_changed) | ||||
|         self.tab_bar.currentChanged.connect(self.stacked_widget.setCurrentIndex) | ||||
|         self.tab_bar.currentChanged.connect(self.on_tab_changed) | ||||
|         # Устанавливаем начальное состояние видимости панели | ||||
|         self.on_tab_changed(self.tabs.currentIndex()) | ||||
|         self.on_tab_changed(self.tab_bar.currentIndex()) | ||||
|  | ||||
|     def activate(self): | ||||
|         """ | ||||
| @@ -1319,6 +1327,11 @@ class WineHelperGUI(QMainWindow): | ||||
|         self.raise_() | ||||
|         self.activateWindow() | ||||
|  | ||||
|     def add_tab(self, widget, title): | ||||
|         """Добавляет вкладку в кастомный TabBar и страницу в StackedWidget.""" | ||||
|         self.tab_bar.addTab(title) | ||||
|         self.stacked_widget.addWidget(widget) | ||||
|  | ||||
|     def _reset_info_panel_to_default(self, tab_name): | ||||
|         """Сбрасывает правую панель в состояние по умолчанию для указанной вкладки.""" | ||||
|         if tab_name == "Автоматическая установка": | ||||
| @@ -1360,7 +1373,7 @@ class WineHelperGUI(QMainWindow): | ||||
|     def on_tab_changed(self, index): | ||||
|         """Скрывает или показывает панель информации в зависимости от активной вкладки.""" | ||||
|         # Очищаем поле поиска на вкладке, которую покинули | ||||
|         previous_widget = self.tabs.widget(self.previous_tab_index) | ||||
|         previous_widget = self.stacked_widget.widget(self.previous_tab_index) | ||||
|         if previous_widget: | ||||
|             # Ищем QLineEdit в дочерних элементах | ||||
|             search_edit = previous_widget.findChild(QLineEdit) | ||||
| @@ -1370,7 +1383,7 @@ class WineHelperGUI(QMainWindow): | ||||
|         # Обновляем индекс предыдущей вкладки для следующего переключения | ||||
|         self.previous_tab_index = index | ||||
|  | ||||
|         current_tab_text = self.tabs.tabText(index) | ||||
|         current_tab_text = self.tab_bar.tabText(index) | ||||
|  | ||||
|         # Сбрасываем растяжение к состоянию по умолчанию: | ||||
|         # растягивается виджет с описанием (индекс 1), а не виджет с действиями (индекс 4) | ||||
| @@ -1738,7 +1751,7 @@ class WineHelperGUI(QMainWindow): | ||||
|         buttons_list = [] | ||||
|         self._populate_install_grid(grid_layout, scripts, script_folder, buttons_list) | ||||
|  | ||||
|         self.tabs.addTab(tab_widget, tab_title) | ||||
|         self.add_tab(tab_widget, tab_title) | ||||
|  | ||||
|         return scripts, buttons_list, grid_layout, search_edit, scroll_area | ||||
|  | ||||
| @@ -1773,7 +1786,7 @@ class WineHelperGUI(QMainWindow): | ||||
|         installed_tab, self.installed_scroll_layout, self.installed_search_edit, self.installed_scroll_area = self._create_searchable_grid_tab( | ||||
|             "Поиск установленной программы...", self.filter_installed_buttons | ||||
|         ) | ||||
|         self.tabs.addTab(installed_tab, "Установленные") | ||||
|         self.add_tab(installed_tab, "Установленные") | ||||
|  | ||||
|     def open_wine_version_dialog(self): | ||||
|         """Открывает диалог выбора версии Wine.""" | ||||
| @@ -1846,7 +1859,7 @@ class WineHelperGUI(QMainWindow): | ||||
|         self.create_prefix_button.clicked.connect(self.start_prefix_creation) | ||||
|         layout.addWidget(self.create_prefix_button) | ||||
|  | ||||
|         self.tabs.addTab(self.prefix_tab, "Создать префикс") | ||||
|         self.add_tab(self.prefix_tab, "Создать префикс") | ||||
|  | ||||
|         self.arch_win32_radio.toggled.connect(self.clear_wine_version_selection) | ||||
|         self.prefix_name_edit.textChanged.connect(self.update_create_prefix_button_state) | ||||
| @@ -1970,7 +1983,7 @@ class WineHelperGUI(QMainWindow): | ||||
|         changelog_layout.addWidget(changelog_text) | ||||
|         help_subtabs.addTab(changelog_tab, "История изменений") | ||||
|  | ||||
|         self.tabs.addTab(help_tab, "Справка") | ||||
|         self.add_tab(help_tab, "Справка") | ||||
|  | ||||
|     def update_create_prefix_button_state(self): | ||||
|         """Включает или выключает кнопку 'Создать префикс' в зависимости от заполнения полей.""" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user