我创建了一个带有QPixmap的QSplashScreen并将其移动到我的第二个监视器(不是默认监视器)的中心:
class SplashScreen(QSplashScreen):
def __init__(self):
self._pixmap = QPixmap("test1.png")
super(SplashScreen, self).__init__(self._pixmap)
screen = 1
scr = qApp.desktop().screenGeometry(screen)
self.move(scr.center() - self.rect().center()) # move to second screen
我现在正试图在我的像素图中添加一些东西,同时显示 SplashScreen:
def drawSomething(self):
add = QPixmap('test2.png')
painter = QPainter(self._pixmap)
painter.drawPixmap(0,0, add)
#nothing happing so far
self.repaint() # nothing happening
self.setPixmap(self._pixmap) # changes shown, but moved back to default-screen
似乎用于创建 QSplashScreen 的 QPixmap 已被复制并且不再是相同的引用,因此对此的更改没有直接影响。
此外,使用setPixmap()
将 SplashScreen 移回默认监视器上。
是否可以选择直接在 Splashscreen 的活动 QPixmap 上绘制或设置新的而不需要再次移动屏幕?
(使用 move-command 似乎不是一个好的选择,当您在短时间内快速重新绘制时 - 启动画面会在两台显示器上闪烁)
用法示例:
app = QApplication([])
splash = SplashScreen()
splash.show()
splash.drawSomething()
exit(app.exec_())