Видеоредактор Очистить [closed]

Я делаю видеоредактор с tkinter, и мне серьезно нужно его очистить и сделать его более удобным для чтения / более эффективным. Может ли кто-нибудь помочь мне очистить мой код (меня отправили сюда из stackoverflow)

Вот: https://github.com/MiniMinnoww/moviepy-video-editor

Части, которые мне как бы нужно выяснить:

  • Кнопки и всплывающие окна. Мне нужно 2 функции для запуска 1 функции видеоредактора. Например, если я хочу добавить текст, мне нужно вызвать функцию, чтобы создать всплывающее окно для деталей текста, а затем вызвать Другой функция, когда кнопка нажата для фактического редактирования видеоклипа.

Вот что я пытался сделать (простыми словами):

def addText(self, x=0):
    if x == 0:
        button = Button(root, command=functools.partial(self.addText, 1))
    else:
        # run other stuff for function

Здесь вы можете видеть, что я повторно выполняю функцию, используя аргумент. Хотя это эффективно, это беспорядочно, и мне было интересно, есть ли лучший способ сделать это?

1 ответ
1

Отсрочка выполнения команды с помощью простой лямбды

Это очень похоже на то, что делали вы, но не нужно вводить более тяжелую артиллерию, например functools.partial, особенно потому, что вы не знаете, кто будет читать ваш код, и они могут его не понять 🙁

Я бы пошел с

def addText(self, x=0):
    if x == 0:
        button = Button(root, command=lambda: self.addText(1))
    else:
        # run other stuff for function

Если это все еще вас раздражает из-за рекурсивного вызова, подумайте:

def auxiliaryStuff(self, x):
    # run other stuff for function

def addText(self, x=0):
    if x == 0:
        button = Button(root, command=lambda: self.auxiliaryStuff(1))
    else:
        self.auxiliaryStuff(x)

Я предполагаю, что x может принимать значения, отличные от 1 или же 0 из других мест вашего кода. Если они всегда либо 1 или же 0 и они просто представляют собой флаг, рассмотрите возможность использования True а также False вместо.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *