Jusqu'à ce que les gens répondent à ma question, je travaillais sur ma propre méthode pour le faire. J'ai seulement commencé la programmation de l'interface graphique, donc je ne connais pas toutes les fonctionnalités de wx, donc j'ai fini par utiliser le module time
. La méthode d'Anurag est probablement meilleure car elle utilise des fonctions wx, mais je vais quand même l'afficher ici comme une autre façon de le faire.
NOTE: Cela peut ne pas fonctionner toujours (j'ai du mal à le faire fonctionner avec des interprètes de diff sur le même système d'exploitation). Donc, utilisez la méthode d'Anurag.
import wx
def vibrate(windowName, distance=15, times=5, speed=0.05, direction='horizontal'):
#Speed is the number of seconds between movements
#If times is odd, it increments so that window ends up in same location
import time
if not times % 2 == 0:
times += 1
location = windowName.GetPositionTuple()
if direction == 'horizontal':
newLoc = (location[0] + distance, location[1])
elif direction == 'vertical':
newLoc = (location[0], location[1] + distance)
for x in range(times):
time.sleep(speed)
windowName.Move(wx.Point(newLoc[0], newLoc[1]))
time.sleep(speed)
windowName.Move(wx.Point(location[0], location[1]))
app = wx.App()
frame = wx.Frame(None, -1, 'Vibrator')
frame.Show()
vibrate(frame)
app.MainLoop()
C'est exactement ce que je cherchais. Vous pouvez voir dans ma réponse ce que je faisais en attendant. Cela ne semble pas fonctionner pour moi, mais je suis à peu près sûr que c'est juste moi (j'ai des IDE différents que certains ont envie de faire du code, d'autres pas). Aucun message d'erreur, donc c'est définitivement le problème de mes interprètes. – avacariu
Quelle version de wxPython utilisez-vous? - AttributeError: l'objet 'module' n'a pas d'attribut 'CallLater' – remosu
@remosu, >>> wx.VERSION -> (2, 8, 10, 1, ''), je me demande quelle est votre version? –