2

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() がありますが、ウィンドウ自体はスクリーンショットに表示されます。どうすればこれを回避できますか?

4

2 に答える 2

0

app.processEvents()未知の時間眠る代わりに、働くべきだと思います。これにより、Qt アプリは進行中のもの (ウィジェットの非表示など) を続行する前に完了させます。これは、回答の1つで説明されている関連する質問です。

于 2012-11-13T18:59:11.007 に答える