Bonjour,
dans le cadre de notre projet de calibration de caméra par un écran LCD, on a développé une application PyQt qui ne contient qu'une mainwindow et un label.
A l'init de la mainwindow on applique une image au label. Voici le code de la classe :
class MainWindow(QMainWindow):
def __init__(self, left, top, path):
QMainWindow.__init__(self, None, Qt.FramelessWindowHint)
self.main_frame = QFrame(self)
self.label = ClickableImageQLabel(self.main_frame)
self.setCentralWidget(self.label)
self.label.clicked.connect(self.close)
self.setPosition(left, top, 0, 0)
self.setImage(path)
Puis dans le main du script python, on fait ceci :
app = QApplication(sys.argv)
main_window = MainWindow(left, top, path)
main_window.show()
ret = app.exec_()
# remove pid-file before exit.
removePIDfile()
sys.exit(ret)
J'ai fait le test de mettre un timer entre main_window.show() et ret = app.exec_()
J'ai remarqué que j'avais ma fenêtre d'ouverte pendant la durée de mon timer mais avec un fond gris et pas d'image.
Une fois le timer terminé, l'image apparait.
Ce script python va être lancé depuis un autre script qui servira de wrapper, afin de rendre la main uniquement si la fenêtre est affiché et l'image aussi.
Comment je peux me garantir que l'image est bien affiché dans la fenêtre de mon application avant de rendre la main pour la suite du process, c'est à dire l'acquisition de l'image ?
Car j'ai eu quelques fois une acquisition caméra alors que l'image n'était pas encore complètement affichée.
Je rajouterai un timer de 20ms après que le script m'ait rendu la main, afin de laisser le temps à l'écran de se rafraichir.
Merci
Sylvain
Partager