Как исправить виджет наложения Pyside6, показывающий сквозь боковую панель QSplitter?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как исправить виджет наложения Pyside6, показывающий сквозь боковую панель QSplitter?

Сообщение Anonymous »

Я пытаюсь построить простой красиво выглядящий рендеринг, чтобы сделать несколько графиков для будущих проектов, поэтому у меня есть наложение с кнопками, расположенными в верхнем углу виджета рендеринга. Кстати, рендерер VTK, только если есть известная проблема. Когда я обрушиваю боковую панель, используя QSplitter, наложение показывает через рухнутую боковую панель, поэтому я вижу боковую панель, которая должна быть обручена. Я приложил упрощенный пример моей проблемы. < /P>

Код: Выделить всё

from PySide6.QtWidgets import (
QApplication, QMainWindow, QWidget, QSplitter,
QToolButton, QBoxLayout
)
from PySide6.QtCore import Qt
import vtk
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor

class Renderer:
def __init__(self, parent=None):
# Create the widget and renderer
self.plotter = QVTKRenderWindowInteractor(parent)
self.renderer = vtk.vtkRenderer()
self.renderer.SetBackground(0, 0, 0)

# Set up the render window
render_window = self.plotter.GetRenderWindow()
render_window.AddRenderer(self.renderer)

# Create interactor style
self.style = vtk.vtkInteractorStyleTrackballCamera()
self.plotter.SetInteractorStyle(self.style)
self.plotter.Initialize()

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Overlay Issue")

# Create main splitter
self.main_splitter = QSplitter(Qt.Horizontal)
self.left_sidebar = QWidget()
self.left_sidebar.setStyleSheet("background-color: #303840;")
self.left_sidebar.setMinimumWidth(200)

self.renderer = Renderer(self)

self.main_splitter.addWidget(self.left_sidebar)
self.main_splitter.addWidget(self.renderer.plotter)
self.main_splitter.setSizes([300, 600, 300])

self.setCentralWidget(self.main_splitter)

# Create overlay with buttons
self.overlay = QWidget(self.renderer.plotter)
self.overlay.setStyleSheet("background: transparent;")

h = QBoxLayout(QBoxLayout.LeftToRight)
self.overlay.setLayout(h)

btn = QToolButton()
btn.setText('text')
btn.setCheckable(True)
btn.setStyleSheet("background-color: #0078d4; color: white; border: none;")
h.addWidget(btn)

self.overlay.adjustSize()
self.overlay.move(10, 10)

if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
Я попытался заменить рендеринг VTK на Qwidget, и кажется, что проблема, затем исчезает.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... er-sidebar
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как заставить боковую панель толкнуть другую боковую панель?
    Anonymous » » в форуме Html
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как заставить боковую панель толкнуть другую боковую панель?
    Anonymous » » в форуме CSS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как заставить боковую панель толкнуть другую боковую панель?
    Anonymous » » в форуме Html
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Виджет с атрибутом WA_TransparentForMouseEvents в QSplitter. Как это сделать?
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Виджет с атрибутом WA_TransparentForMouseEvents в QSplitter. Как это сделать?
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

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