2
我想通過截取窗口後面的內容來創建一個僞透明窗口,如果它不在那裏使用PyQt。以下代碼需要屏幕截圖:PyQT的僞透明度
#!/usr/bin/python3
from PyQt4.QtGui import *
app = QApplication([])
widget = QWidget()
widget.setLayout(QVBoxLayout())
label = QLabel()
widget.layout().addWidget(label)
def shoot():
geometry = widget.geometry()
widget.hide()
label.setPixmap(QPixmap.grabWindow(QApplication.desktop().winId(), x = geometry.x(), y = geometry.y(), height = geometry.height(), width = geometry.width())
widget.show()
widget.layout().addWidget(QPushButton('Screenshot', clicked = shoot))
widget.show()
app.exec_()
雖然存在widget.hide(),但窗口本身顯示在屏幕截圖上。我怎樣才能避免這種情況?
你有沒有嘗試在'widget.hide()'和設置標籤的Pixmap之間等待('time.sleep()')一段時間?當你截圖的時候,可能這個小部件還沒有被隱藏。另外,你是否嘗試過使用'widget.setAttribute(Qt.WA_TranslucentBackground,True)'實際透明度? – Junuxx
謝謝,如果我在widget.hide()之後添加0.3秒的睡眠,它實際上是有效的。但是我怎麼知道要等多久?有沒有辦法等到隱藏事件結束? –