我正在尝试修改使用 pyQt (特别是Anki)编写的程序。我希望程序短暂地闪烁一张图片(作为文件存储在我的硬盘上),然后继续正常运行。
这段代码将被插入到程序中的某个任意点。这是现有程序的临时单用户补丁 - 它不需要快速、优雅或易于维护。
我的问题是我对pyQt知之甚少。我是否需要定义一个全新的“窗口”,或者我可以运行某种带有图像的“通知”功能?
QSplashScreen 将对此很有用。它主要用于在程序加载时显示某些图像/文本,但您的情况看起来也很适合。您可以通过单击它来关闭它,或者另外您可以设置一个计时器以在一段时间后自动关闭它。
这是一个简单的示例,其中包含一个只有一个按钮的对话框。按下它会显示图像并在 2 秒后关闭:
import sys
from PyQt4 import QtGui, QtCore
class Dialog(QtGui.QDialog):
def __init__(self, parent=None):
super(Dialog, self).__init__(parent)
layout = QtGui.QVBoxLayout()
self.setLayout(layout)
self.b1 = QtGui.QPushButton('flash splash')
self.b1.clicked.connect(self.flashSplash)
layout.addWidget(self.b1)
def flashSplash(self):
# Be sure to keep a reference to the SplashScreen
# otherwise it'll be garbage collected
# That's why there is 'self.' in front of the name
self.splash = QtGui.QSplashScreen(QtGui.QPixmap('/path/to/image.jpg'))
# SplashScreen will be in the center of the screen by default.
# You can move it to a certain place if you want.
# self.splash.move(10,10)
self.splash.show()
# Close the SplashScreen after 2 secs (2000 ms)
QtCore.QTimer.singleShot(2000, self.splash.close)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = Dialog()
main.show()
sys.exit(app.exec_())