我使用PyQT5创建GUI。基本上,我想要的是一个透明窗口,可以扩展屏幕的整个宽度和高度(包括MacOS上的工具栏和底座)
我用来实现此目的的代码是这样的:
filter_var(getenv('REQUEST_METHOD'));
我打开GUI就像这样:
class Gui(QWidget):
def __init__(self):
#Initialize the QApp/QWidget things
super().__init__()
#Add a default rectangle
self.rectangle = QRect(0, 0, 0, 0)
#Build the window in a method to keep the init clean
self.buildWindow()
#Build the window
def buildWindow(self):
#Make the window transparent
self.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint | Qt.Popup)
self.setAttribute(Qt.WA_TranslucentBackground)
#Maximize the window
self.resize(1920, 1080)
#Enable mouse tracking
self.setMouseTracking(True)
#Render the window
self.show()
问题是GUI打开,渲染一秒钟,然后立即消失。如果我从窗口标记中删除#Instantiate our app and Gui stuff.
app = QApplication(sys.argv)
gui = Gui()
#Make the cursor the "cross cursor" for effect
app.setOverrideCursor(QCursor(Qt.CrossCursor))
#Exit when our app exits
sys.exit(app.exec_())
,它将完全按照我想要的方式执行(但它不会延伸到Dock或MacOS上的工具栏)
我听说这个问题是由于Python的垃圾收集系统而呈现的小部件导致(一般),但是我是不确定这是否是问题,因为如果删除Qt.Popup
任何有QT经验并且可以提供帮助的人都会很棒..我已经试图找出这个bug几天了。
编辑:如果你不能告诉我,我正在MacOS上开发这个