我现在有一个非常简单的PyQt5应用程序(只有一个按钮)。我希望它具有vibrance,所以我将ObjC vibrance代码移植到Python中。我的振动代码如下:
frame = NSMakeRect(0, 0, * self.get_screen_size()) # get_screen_size returns the resolution of the monitor
view = objc.objc_object(c_void_p=self.winId().__int__()) # returns NSView of current window
visualEffectView = NSVisualEffectView.new()
visualEffectView.setAutoresizingMask_(NSViewWidthSizable|NSViewHeightSizable) # equivalent to: visualEffectView.autoresizingMask = NSViewW...
visualEffectView.setFrame_(frame)
visualEffectView.setState_(NSVisualEffectStateActive)
visualEffectView.setMaterial_(NSVisualEffectMaterialDark)
visualEffectView.setBlendingMode_(NSVisualEffectBlendingModeBehindWindow)
window = view.window()
window.contentView().addSubview_positioned_relativeTo_(visualEffectView, NSWindowBelow, None)
# equal to: [window.contentView addSubview:visualEffectView positioned:NSWindowBelow relativeTo:nul]
window.setTitlebarAppearsTransparent_(True)
window.setStyleMask_(window.styleMask() | NSFullSizeContentViewWindowMask) # so the title bar is also vibrant
self.repaint()
我要做的就是画一个按钮:btn = QPushButton("test", self)
self
是从QMainWindow
继承的类,其他所有内容都应该相当不重要。你知道吗
注释掉window.contentView().addSubview...
行的行为(无振动)
没有它的行为(充满活力)
谢谢!你知道吗
UI元素实际上是绘制的,但是
NSVisualEffectView
正在覆盖它们。 我通过向窗口添加另一个视图QMacCocoaViewContainer
修复了这个问题。你知道吗您还需要将窗口设置为透明的,否则窗口小部件将有一个轻微的背景边框。你知道吗
如果你使用黑暗的充满活力的窗口,也要确保设置正确的外观,使按钮,标签等渲染正确。你知道吗
结果:
相关问题 更多 >
编程相关推荐