Задать вопрос
  • Отцентрировать Иконку внутри кнопки Python kivy?

    @bigburn
    Делаю неживое живым
    ButtonBehavior не подходит? https://kivy.org/doc/stable/api-kivy.uix.behaviors...
    Ответ написан
    Комментировать
  • Как изменить label по id kivy?

    @bigburn
    Делаю неживое живым
    1. on_press: root.upd()
    2. self.ids['fer'].text = ':<'

    from kivy.lang import Builder
    from kivy.app import App
    from kivy.uix.label import Label
    from kivy.uix.button import Button
    from kivy.uix.boxlayout import BoxLayout
    
    Builder.load_string("""
    <Gex>:
      orientation: 'vertical'
      Button:
        text: 'UwU'
        on_press: root.upd()
      Label:
        id: fer
        text: ' '
    """)
    class Gex(BoxLayout):
     def upd(self):
      self.ids['fer'].text = ':<'
    
    class FakeApp(App):
     def build(self):
      return Gex()
    
    FakeApp().run()
    Ответ написан
    Комментировать
  • Можно ли получить globals() для другого модуля?

    @bigburn Автор вопроса
    Делаю неживое живым
    похоже, modulename.__dict__
    - то, что нужно.
    Ответ написан
    Комментировать
  • Есть ли способ не выполнять выражения внутри тела with?

    @bigburn Автор вопроса
    Делаю неживое живым
    похоже, нашел один способ
    import sys
    import inspect
    
    class My_Context(object):
        def __init__(self,mode=0):
            """
            if mode = 0, proceed as normal
            if mode = 1, do not execute block
            """
            self.mode=mode
        def __enter__(self):
            if self.mode==1:
                print 'Met block-skipping criterion ...'
                # Do some magic
                sys.settrace(lambda *args, **keys: None)
                frame = inspect.currentframe(1)
                frame.f_trace = self.trace
        def trace(self, frame, event, arg):
            raise
        def __exit__(self, type, value, traceback):
            print 'Exiting context ...'
            return True
    
    with My_Context(mode=1):
        print 'Executing block of code ...'


    написан на 2 питоне, но на 3 должно быть легко переписать.
    mode=1 игнорирует выполнение тела with блока.
    Кстати, советуют не использовать такое.

    UPD:
    вариант для python3

    import sys
    
    class SkipWithBlock(Exception):
        pass
    
    
    class SkipContextManager:
        def __init__(self, skip = True):
            self.skip = skip
    
        def __enter__(self):
            if self.skip:
                sys.settrace(lambda *args, **keys: None)
                frame = sys._getframe(1)
                frame.f_trace = self.trace
    
        def trace(self, frame, event, arg):
            raise SkipWithBlock()
    
        def __exit__(self, type, value, traceback):
            if type is None:
                return  # No exception
            if issubclass(type, SkipWithBlock):
                return True  # Suppress special SkipWithBlock exception
    
       
    with SkipContextManager():  
        print('In the with block')  # Won't be called
    
    print('Out of the with block')
    Ответ написан
  • Kivy: как правильно создать RecycleView с чекбоксами?

    @bigburn Автор вопроса
    Делаю неживое живым
    решение от tshirtman
    from kivy.lang import Builder
    from kivy.app import App
    from kivy.properties import ListProperty, NumericProperty
    
    KV = '''
    #:import RGBA kivy.utils.rgba
    
    <Row@BoxLayout>:
        text: ''
        rv_key: 0
    
        CheckBox:
            active: root.rv_key in app.current_selection
            on_active: app.select_row(root.rv_key, self.active)
    
        Label:
            text: root.text
    
    FloatLayout:
        RecycleView:
            size_hint: .8, .8
            pos_hint: {'center': (.5, .5)}
            data: app.data
            viewclass: 'Row'
    
            canvas.before:
                Color:
                    rgba: RGBA('#212121')
    
                Rectangle:
                    pos: self.pos
                    size: self.size
    
            RecycleBoxLayout:
                orientation: 'vertical'
                size: self.minimum_size
                size_hint_y: None
                default_size_hint: 1, None
                default_size: 0, 50
    '''
    
    
    class TestApp(App):
        data = ListProperty()
        current_selection = ListProperty([])
    
        def build(self):
            self.data = [
                dict(
                    text='key {}'.format(i),
                    rv_key=i,
                )
                for i in range(100)
            ]
            return Builder.load_string(KV)
    
        def select_row(self, rv_key, active):
            if active and rv_key not in self.current_selection:
                self.current_selection.append(rv_key)
            elif not active and rv_key in self.current_selection:
                self.current_selection.remove(rv_key)
    
    
    if __name__ == '__main__':
        TestApp().run()

    Ссылка на гист
    Ответ написан
    Комментировать
  • Где вы берете идеи для дизайна?

    @bigburn
    Делаю неживое живым
    https://www.awwwards.com — ссылки на сайты с "отзывчивым", креативным и просто красивым дизайном
    https://dribbble.com, https://codepen.io, https://tympanus.net/codrops/all-articles/ — в основном различные элементы дизайна.
    Pinterest ещё посматриваю
    Ответ написан
    Комментировать
  • Какой движок выбрать для 3D гейм-дева новичку-любителю?

    @bigburn
    Делаю неживое живым
    Наверное, как новичку, скорее всего, действительно лучше посоветовать unity, из-за обилия ассетов и туториалов.

    Но если упор на 2d, есть знание питона, то я бы обратил внимание также на Godot engine.
    — открытый исходный код
    — 100% бесплатность
    — наличие легкого питоноподобного языка GDscript
    — стремительное развитие движка

    это только некоторые козыри Godot.

    Вещи, которые надо иметь в виду:
    — На данный момент, увы, нет такого многообразия ассетов и туториалов, из русскоязычного — совсем мало (больше всего пока материала по этому движку у SkanerSoft), поэтому придётся бороздить забугорные просторы.
    Юнити (правда редко бесплатное удовольствие) имеет практически готовые шаблоны проектов, в том числе с отличным дизайном.

    —также вследствие того, что движок серьезно начал развиваться относительно недавно, пока сложно встретить серьёзные игры написанные на нём (с большим числом уровней и тд)

    Но присмотреться определенно стоит.
    Посмотреть, какие игры можно создать на Godot — YouTube --> Godot showcase
    Ответ написан
    2 комментария
  • Как проверить, находится ли корень проблемы рендеринга текста в библиотеке freetype?

    @bigburn Автор вопроса
    Делаю неживое живым
    Похоже, нашел ответ
    https://www.freetype.org/developer.html

    Тут говорится о ftview или ftstring.
    Прочекаю)
    Ответ написан
    Комментировать
  • Можно ли задать функцию для кнопки, не нажимая ее?

    @bigburn
    Делаю неживое живым
    Если еще актуально, то, например, так:

    import kivy
    from kivy.app import App
    from kivy.lang import Builder
    
    KV = """
    BoxLayout
        Button
            text: "click me!"
            on_press: b2.text='thank you!'
        Button
            id: b2
    """
    
    class MyApp(App):
        def build(self):
            self.root = Builder.load_string(KV)
    
    MyApp().run()
    Ответ написан
    Комментировать
  • Игры на python и kivy, чем пользоваться?

    @bigburn
    Делаю неживое живым
    Пара мыслей по поводу Kivy:
    Для начала советую вдумчиво изучить гитхаб.
    Чтобы вообще понять, какой минимум (именно минимум) можно достичь на киви и как устроено там все внутри.
    Там конечно много шлака и сырых приложений как результат kivy конкурсов (типа калькуляторов и вариаций flappy bird), но местами попадаются довольно достойные примеры.

    Что касается игр, то это в основном 2D, правда я видел одного безумного стримера, который написал RPG 3D с элементами физики, уровнями и тд (хотя дизайн ну очень на любителя, но тем не менее).

    Сложность в том что многие вещи нужно будет писать самому
    В частности kivy совсем не для ленивых 3D разработчиков (из официальных примеров по-моему только вращающаяся голова обезьяны).
    Поэтому будьте готовы пройти через тернии к кватернионам.

    на данный момент для kivy нет вообще такого понятия как ассеты, как на unity, В общем, многие вещи нужно будет поднимать с нуля.

    2D представлен уже гораздо более широко, то есть можно с каждого репозитория стягивать по функции/классу и по идее получить довольно годный продукт. Это конечно потребует времени.

    Самое главное, на что ни в коем случае не надо обращать внимание — это на убогость дизайна элементов kivy по умолчанию (кнопки цвета хаки, которые при нажатии выделяются синим, не должны дизморалить). Есть например kivymd, но можно сделать еще лучше, богаче и умнее.

    С другой стороны обнадеживают две вещи:

    1. просто посмотрите, как лаконичен в среднем код для приложений на kivy. Это значит будет очень сложно запутаться. Если понять что к чему, то писать такой код будет определенно в радость.
    И да, в отличие от того же Unity, в качестве компенсации удобства и скорости разработки игр, kivy может похвастаться гораздо большей гибкостью. в плане гибкости можно часто услышать определение "пластилиновый фреймворк" — что хотите то лепите.

    2. Киви поддерживает Glsl.
    Это то, с помощью чего делают крутые шейдеры в играх.
    То есть если подучить glsl, то в киви можно делать реально бомбезные по красоте вещи.
    Можно написать например те же даймондс, которые не будет уступать по дизайну топовым на Google Play.

    Можно писать всякие красивые UI элементы, не уступающие CSS и тд.

    3. Кроссплатформенность.
    Можно запускать даже на Андроиде, по сути это то, почему я начал его изучать.
    В том числе релизить свои игры и приложения в Play Маркете и если продукт действительно стоящий, то это дело монетизировать.

    В общем, по крайней мере обратить внимание считаю определённо стоит
    Ответ написан
    2 комментария
  • Git + Google Colab = No module что упущено при клонировании репозитория?

    @bigburn Автор вопроса
    Делаю неживое живым
    В репозитории имеется файл layers.
    все работает, таким образом:

    !git clone https://github.com/tomlepaine/fast-wavenet.git
    %cd fast-wavenet/wavenet


    А не просто %cd fast-wavenet
    Вторая ячейка:

    from time import time
    from utils import make_batch
    from models import Model, Generator
    from IPython.display import Audio
    %matplotlib inline


    Здесь и далее просто удаляем везде где есть 'wavenet.'
    Ответ написан
    Комментировать
  • Кто знает варианты вертикальной галереи с функцией прокрутки мышкой?

    @bigburn
    Делаю неживое живым
    Нужно приложение или интересует, как устроен код на определённом языке (каком)?

    Точно знаю, что такое несложно написать, например, на Kivy (python)
    Ответ написан
  • Какие есть хорошие программы для обработки записей с диктофона?

    @bigburn
    Делаю неживое живым
    Почистить и убрать шумы - действительно одна из важнейших вещей при обработке непрофессиональных записей. Для этих целей всем советую Izotop RX. Великолепно справляется не только с фоновыми шумами постоянной частоты, но и с щелчками, слюнками и тд. Вплоть до того, что умеет изменять количество реверберации и бороться с клипирующими отрывками в аудио. Гляньте видео на Ютубе. Must have. Также обратите внимание на популярные аудиоредакторы (можете исключить из поиска слово DAW - это программы, больше нацеленные на работу с миди, то есть на создание музыки). SoundForge, Audition и иже с ними, базовый арсенал по-моему у всех одинаковый. На первых порах его будет более чем достаточно
    Ответ написан