Пока люди не ответили на мой вопрос, я работал над своим методом. Я только начал программировать с помощью графического интерфейса, поэтому я не знаю всех возможностей wx, поэтому я использовал модуль time
. Метод Анурага, вероятно, лучше, так как он использует функции wx, но в любом случае я опубликую это здесь как еще один способ сделать это.
ПРИМЕЧАНИЕ: Это может не всегда работать (у меня проблемы с настройкой работы с интерпретаторами различий в одной и той же ОС). Так что используйте метод Анурага.
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()