-
-
Notifications
You must be signed in to change notification settings - Fork 85
Open
Labels
bugSomething isn't workingSomething isn't working
Description
bug描述:
framelesswindow窗口初始最大化显示, 点击最小化按钮,点击任务栏窗口图标弹出窗口, 界面上控件出现了移位(多重复几次, 移位更明显), 添加了app.setAttribute(Qt.AA_DontCreateNativeWidgetSiblings) 这句话后, 仅有vtk控件移位
环境
- OS: window11
- DPI scaling: 150%
- Python: 3.10.12
- PyQt5: 5.15.10
- vtk: 9.3.0
复现步骤:
1.正常运行程序, 点击最小化, 窗口隐藏
2.点击任务栏窗口图标, 窗口显示 -- vtk控件位置已改变
3.再次点击最小化
4. 再次点击任务栏图标,窗口显示-- vtk控件位置变化更明显
Code
最小复现代码
import os
import sys
sys.path.append(os.getcwd())
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget, QPushButton
from PyQt5.QtCore import Qt
import vtk
from vtkmodules.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor as QVTKInteractor
from qframelesswindow import FramelessWindow
class SRWidget(QWidget):
def __init__(self):
super().__init__()
self.layout = QVBoxLayout(self)
self.layout.setContentsMargins(0, 0, 0, 0)
self.layout.setSpacing(0)
self.vtk_widget = QVTKInteractor(self)
self.vtk_widget.SetInteractorStyle(vtk.vtkInteractorStyleTrackballCamera())
self.layout.addWidget(self.vtk_widget)
self.renderer = vtk.vtkRenderer()
self.renderer.SetBackgroundAlpha(1)
self.renderer.SetBackground(0.18, 0.18, 0.18)
self.vtk_widget.GetRenderWindow().AddRenderer(self.renderer)
self.vtk_widget.Initialize()
class MainWindow(FramelessWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("Interactive Viewer")
self.mainLayout = QVBoxLayout(self)
print(self.titleBar.height())
self.mainLayout.setContentsMargins(0, self.titleBar.height(), 0, 0)
self.mainLayout.setSpacing(0)
self.sr_widget = SRWidget()
btn1 = QPushButton("this A Button")
btn2 = QPushButton("this B Button")
self.mainLayout.addWidget(btn1)
self.mainLayout.addWidget(self.sr_widget)
self.mainLayout.addWidget(btn2)
self._create_test_cube()
def _create_test_cube(self):
cube = vtk.vtkCubeSource()
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(cube.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().SetColor(0.5, 0.8, 0.5)
self.sr_widget.renderer.AddActor(actor)
self.sr_widget.renderer.ResetCamera()
self.sr_widget.vtk_widget.GetRenderWindow().Render()
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setAttribute(Qt.AA_DontCreateNativeWidgetSiblings)
window = MainWindow()
window.showMaximized()
sys.exit(app.exec_())Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working