2010-07-25 6 views
2

Pourquoi les commandes permettent-elles de modifier la position de la fenêtre avant et après la mise en veille (3.00)?Aide sur la géométrie Windows en Python

if self.selectedM.get() == 'Bump': 
     W1 = GetSystemMetrics(1) + 200 
     print W1 
     w1.wm_geometry("+100+" + str(W1)) 
     w2.wm_geometry("+100+" + str(W1)) 
     w3.wm_geometry("+100+" + str(W1)) 
     w4.wm_geometry("+100+" + str(W1)) 
     self.rvar.set(0) 
     self.rvar2.set(0) 
     self.rvar3.set(0) 
     self.rvar4.set(0) 

     s = self.wm_geometry() 
     geomPatt = re.compile(r"(\d+)?x?(\d+)?([+-])(\d+)([+-])(\d+)") 

     m = geomPatt.search(s) 
     X3 = m.group(4) 
     Y3 = m.group(6) 

     M = int(Y3) - 150 

     P = M + 150 


     MH = W1 
     MUH = Y3 


     while Y3 > M: 
      sleep(0.0009) 
      Y3 = int(Y3) - 1 
      self.update_idletasks() 
      self.wm_geometry("+" + str(X3) + "+" + str(Y3)) 
      print 1 

     Alpha = 1.0 
     #while 0.0 < Alpha : 
     # Alpha = Alpha - 0.01 
      # self.attributes("-alpha", Alpha) 
      # sleep(0.005) 




     self.wm_geometry("+" + str(X3) + "+" + str(MH)) 

     sleep(3.00) 

     self.wm_geometry("+" + str(X3) + "+" + str(MUH)) 




     #while 1.0 > Alpha : 
     # Alpha = Alpha + 0.01 
      # self.attributes("-alpha", Alpha) 
      # sleep(0.005) 

     while Y3 < P: 
      sleep(0.0009) 
      Y3 = int(Y3) + 1 
      self.update_idletasks() 
      self.wm_geometry("+" + str(X3) + "+" + str(Y3)) 

Répondre

1

La réponse à votre question est que vous ne donnez pas au système une chance de mettre à jour l'affichage. L'affichage est mis à jour par la boucle d'événements mais vous n'entrerez pas dans la boucle d'événements après l'un des appels wm_geometry entourant l'appel sleep(3.00). Ils ne sont pas ignorés, c'est juste que vous modifiez la géométrie avant que le système ait une chance de mettre à jour l'affichage.

La réponse à la question Having Trouble with Tkinter Transparency vous aide-t-elle aussi à résoudre ce problème?