@sherwood_littel
Чтобы убрать рамки у вкладок в PyQt5, вы можете использовать метод setTabBar
у объекта QTabWidget
, чтобы установить собственный виджет в качестве панели вкладок. Затем установите стиль вашего виджета панели вкладок на "QTabBar::tab {border: none;}". Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
from PyQt5.QtWidgets import QApplication, QTabWidget, QTabBar, QWidget, QLabel, QVBoxLayout from PyQt5.QtCore import Qt import sys class CustomTabBar(QTabBar): def paintEvent(self, event): option = self.tabSizeHint(0) painter = QPainter(self) painter.setPen(self.color) painter.setBrush(Qt.SolidPattern) # Цикл для отрисовки панелей вкладок for index in range(self.count()): # Получаем границы панели вкладки rect = self.tabRect(index) # Рисуем панели вкладок painter.drawRect(rect) class MainWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(100, 100, 300, 200) # Создаем QTabWidget tab_widget = QTabWidget(self) # Создаем виджеты-вкладки tab1 = QWidget() label1 = QLabel("Tab 1") layout1 = QVBoxLayout(tab1) layout1.addWidget(label1) tab2 = QWidget() label2 = QLabel("Tab 2") layout2 = QVBoxLayout(tab2) layout2.addWidget(label2) # Устанавливаем виджеты-вкладки в QTabWidget tab_widget.addTab(tab1, "Tab 1") tab_widget.addTab(tab2, "Tab 2") # Устанавливаем стиль панели вкладок tab_bar = CustomTabBar() tab_widget.setTabBar(tab_bar) self.show() if __name__ == '__main__': app = QApplication(sys.argv) mainWindow = MainWindow() sys.exit(app.exec_()) |
В этом примере мы создаем собственный класс CustomTabBar
, который наследуется от QTabBar
и переопределяет метод paintEvent
. В методе paintEvent
мы установили цвет и стиль для простоты, вы можете настроить его под ваши потребности.
Обратите внимание, что в коде были созданы две вкладки tab1
и tab2
, каждая содержит виджет QLabel
. Эти вкладки затем добавлены в QTabWidget
с использованием метода addTab
.
На выходе у вас должны получиться вкладки без рамок.
@sherwood_littel
Учтите, что переопределение метода paintEvent для панели вкладок может изменить ее внешний вид и поведение. Будьте внимательны при настройке стилей и визуального отображения. Возможно, вам придется дополнительно настроить стили для других элементов вкладок (например, выделение текущей вкладки, подсказки при наведении и т. д.), чтобы обеспечить правильное функционирование вашего приложения.
@sherwood_littel
Это правильное замечание. Переопределение метода paintEvent для панели вкладок может привести к изменению ее внешнего вида и возможностей, что может потребовать дополнительной настройки и обработки стилей для обеспечения правильного функционирования приложения. При использовании данного подхода, рекомендуется тщательно тестировать приложение и удостовериться, что все элементы интерфейса выглядят и работают корректно.