Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

Andy_U

  • 120
    вклад
  • 0
    вопросов
  • 214
    ответов
  • 38%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как в pycharm добавить vcs в главное меню?

    Andy_U @Andy_U
    Покупайте Professional Edition. В Community Edition нет интеграции с VCS.
    Ответ написан более года назад
    1 комментарий
    Нравится 1 комментарий
  • Вы когда-нибудь встречались с данной ошибкой?

    Andy_U @Andy_U
    Не может быть в имени профиля (пользователя) русской буквы, совпадающей по написанию с латинской? Или пробел гадит?
    Ответ написан более года назад
    Комментировать
    Нравится Комментировать
  • Как работать с разными версиями одного проекта?

    Andy_U @Andy_U
    Что удивительно, ответа про использование отдельного бранча для нового проекта я не увидел. Общие изменения делать в основной ветке и мержить их в новую. Можно и наоборот, но чуть сложнее. Или просто cherry pick использовать...
    Ответ написан более года назад
    1 комментарий
    Нравится 1 1 комментарий
  • Почему я не могу установить модуль pyowm?

    Andy_U @Andy_U
    Файл не докачался. Какие-то проблемы с сетью. Может, где-нибудь в (transparent) proxy застрял? Или ваш антивирус возбудился? Или место на диске закончилось? Попробуйте скачать модуль ручками, или через какой-нибудь vpn...
    Ответ написан более года назад
    Комментировать
    Нравится Комментировать
  • Как можно readlin()-ом построчно читать текстовый файл, игнорирую управляющую последовательность \x?

    Andy_U @Andy_U
    Вот тот вариант, который не ломается.

    if __name__ == '__main__':
    
        with open('1933.log', errors='backslashreplace') as f:
            for s in f:
                print('"'+s[:-1]+'"')
    Ответ написан более года назад
    Комментировать
    Нравится 1 Комментировать
  • Как в PyCharm сделать Type Hinting классов?

    Andy_U @Andy_U
    Вот так надо:
    5d127782c5282869171049.png
    Ответ написан более года назад
    11 комментариев
    Нравится 11 комментариев
  • Вместо Ui_MainWindow, Ui_Form, как так-то?

    Andy_U @Andy_U
    Там это вроде зависит от типа главного окна. Вы, видимо диалог выбрали?
    Ответ написан более года назад
    3 комментария
    Нравится 3 комментария
  • Почему не одинаковый numpy-массивы считаются одинаковыми?

    Andy_U @Andy_U
    Так вы же не массивы поэлементно сравниваете, а то, что выдает функция all для них. См. тут.
    Ответ написан более года назад
    4 комментария
    Нравится 4 комментария
  • Как исправить ошибку и почему она появляется: TypeError: unsupported operand type(s) for /: 'str' and 'str'?

    Andy_U @Andy_U
    Потому что a, b и с - после input это строки, а не числа.

    P.S. А вот что строка*(-1) не генерирует исключения, а дает пустую строку, этого я не знал.
    Ответ написан более года назад
    9 комментариев
    Нравится 9 комментариев
  • Как рекурсивно изменить расширения "файлов" в корзине S3?

    Andy_U @Andy_U
    Смотрите cюда, выбираете язык программирования и вперед.
    Ответ написан более двух лет назад
    Комментировать
    Нравится Комментировать
  • Обязательно ли использовать try/else?

    Andy_U @Andy_U
    Оба вариант некорректны. Протестируйте и увидите.
    Ответ написан более двух лет назад
    3 комментария
    Нравится 1 3 комментария
  • Установленные библиотеки в виртуальное окружение, так же устанавливаются во внешнее окружение, как исправить?

    Andy_U @Andy_U
    Ваши проблемы из-за русских символов в пути к вашей рабочей директории. Да и пробелы могут нагадить. В общем, повторите в новой директории без русских букв и пробелов создание виртуального окружения и потом, после activate, выполните pip list и where pip. Все должно заработать. Я только что проверил, что с русскими символами ошибки те же, что и у Вас.
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 1 комментарий
  • Как отобразить текст в терминале при перенаправлении потоков stdout и stderr в Ubuntu 18.04?

    Andy_U @Andy_U
    tee
    Ответ написан более двух лет назад
    Комментировать
    Нравится 2 Комментировать
  • Можно ли в matplotlib обозначить разное расстояние с одинаковыми делениями на оси?

    Andy_U @Andy_U
    plt.semilogx(xx, yy)
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 1 комментарий
  • Почему интерфейсы не избыточны?

    Andy_U @Andy_U
    В приведенном коде все будет работать и без абстрактных классов. Но если в конце (перед newspaper.add_news('Сообщение')) добавить строчку newspaper.register('abc'), то лишь выполнение программы закончится с ошибкой. Если код сложнее представленного, ошибка может всплыть совсем не сразу. Тот же Pycharm данную ошибку никак не сможет обнаружить.

    А вот если к коду добавить type hints:
    from typing import List
    from abc import ABC, abstractmethod
    
    
    class Observer(ABC):
        @abstractmethod
        def update(self, message: str) -> None:
            pass
    
    
    class Observable(ABC):
        @abstractmethod
        def register(self, observer: Observer) -> None:
            pass
    
        @abstractmethod
        def notify_observers(self, message: str) -> None:
            pass
    
    
    class Newspaper(Observable):
        def __init__(self) -> None:
            self.observers: List[Observer] = []
    
        def register(self, observer: Observer) -> None:
            self.observers.append(observer)
    
        def notify_observers(self, message: str) -> None:
            for observer in self.observers:
                observer.update(message)
    
        def add_news(self, news: str) -> None:
            self.notify_observers(news)
    
    
    class Citizen(Observer):
        def __init__(self, name: str) -> None:
            self.name = name
    
        def update(self, message: str) -> None:
            print('{} получил: {}'.format(self.name, message))
    
    
    if __name__ == '__main__':
    
        newspaper = Newspaper()
        newspaper.register(Citizen('Иван'))
        newspaper.register(Citizen('Василий'))
        newspaper.register('abc')
        newspaper.add_news('Сообщение')

    то при использовании Pycharm или mypy они сразу отругаются на ошибку типа:
    (VENV~1) D:\My Documents\PycharmProjects\tst>mypy --strict tst105.py
    tst105.py:49: error: Argument 1 to "register" of "Newspaper" has incompatible type "str"; expected "Observer"


    Т.е., если пишете небольшие программы исключительно для себя в notepad'е - можно и без абстрактных классов и type hints. А вот во всех иных случаях - лучше действовать профессионально.
    Ответ написан более двух лет назад
    Комментировать
    Нравится 1 Комментировать
  • Как можно сделать n вложенных циклов, если n задаётся пользователем?

    Andy_U @Andy_U
    Если отвечать формально на вопрос из заголовка вопроса, то читайте про рекурсивные функции.
    Ответ написан более двух лет назад
    Комментировать
    Нравится 1 Комментировать
  • Как сбросить Radiobutton в PyQt5?

    Andy_U @Andy_U
    Что-то непонятное было с вашим кодом: как-то странно кнопки нажимались, radio button'ы не в группе. В общем, мне было проще воспроизвести вид окна в QTDesigner'e и потом скопировать сгерерированный питоновский код прямо в ваш бывший, сделав его классом. Ну и потом добавить вызов btn.setAutoExclusive(False/True) - чтобы сбросить кнопку. А чтобы при показе не мигало, добавить repaint() при Hide. См.ниже:

    import sys
    from PyQt5 import QtWidgets, QtCore
    
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(196, 153)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
            self.groupBox.setGeometry(QtCore.QRect(10, 10, 81, 111))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
            self.groupBox.setSizePolicy(sizePolicy)
            self.groupBox.setTitle("")
            self.verticalLayoutWidget = QtWidgets.QWidget(self.groupBox)
            self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 61, 91))
            self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
            self.verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
            self.verticalLayout.setContentsMargins(0, 0, 0, 0)
            self.radio_button_1 = QtWidgets.QRadioButton(self.verticalLayoutWidget)
            self.verticalLayout.addWidget(self.radio_button_1)
            self.radio_button_2 = QtWidgets.QRadioButton(self.verticalLayoutWidget)
            self.verticalLayout.addWidget(self.radio_button_2)
            self.radio_button_3 = QtWidgets.QRadioButton(self.verticalLayoutWidget)
            self.verticalLayout.addWidget(self.radio_button_3)
            self.radio_button_4 = QtWidgets.QRadioButton(self.verticalLayoutWidget)
            self.verticalLayout.addWidget(self.radio_button_4)
            self.hide_button = QtWidgets.QPushButton(self.centralwidget)
            self.hide_button.setGeometry(QtCore.QRect(100, 20, 75, 23))
            self.show_button = QtWidgets.QPushButton(self.centralwidget)
            self.show_button.setGeometry(QtCore.QRect(100, 50, 75, 23))
            MainWindow.setCentralWidget(self.centralwidget)
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
            self.radio_button_1.setText(_translate("MainWindow", "One"))
            self.radio_button_2.setText(_translate("MainWindow", "Two"))
            self.radio_button_3.setText(_translate("MainWindow", "Three"))
            self.radio_button_4.setText(_translate("MainWindow", "Four"))
            self.hide_button.setText(_translate("MainWindow", "Hide"))
            self.show_button.setText(_translate("MainWindow", "Show"))
    
    
    class MyWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    
        def __init__(self):
            super(MyWindow, self).__init__()
            self.setupUi(self)
            self.hide_button.clicked.connect(self.hide_radio_buttons)
            self.show_button.clicked.connect(self.show_radio_buttons)
    
        def hide_radio_buttons(self):
            for btn in [self.radio_button_1, self.radio_button_2, self.radio_button_3, self.radio_button_4]:
                btn.setAutoExclusive(False)
                btn.setChecked(False)
                btn.repaint()
                btn.setAutoExclusive(True)
                btn.hide()
    
        def show_radio_buttons(self):
            for btn in [self.radio_button_1, self.radio_button_2, self.radio_button_3, self.radio_button_4]:
                btn.show()
    
    
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        window = MyWindow()
        window.show()
        sys.exit(app.exec())
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 1 1 комментарий
  • Как проверить наличие переменной?

    Andy_U @Andy_U
    А не лучше так?
    def pr(self) -> bool:
        return 'last_name' in self.__dir__()
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 1 комментарий
  • PyQT5 как добавить элемент по событию?

    Andy_U @Andy_U
    Введите в строку поиска google текст "qt5 add widget dynamically" и выбирайте решение. Вот, например, разумный совет:

    You have to write your own slot to add new widgets. But that's not difficult. Just create a new widget and add it to the layout via QLayout::addWidget().
    Ответ написан более двух лет назад
    Комментировать
    Нравится Комментировать
  • Ошибка при установке модуля pytonnet?

    Andy_U @Andy_U
    Возьмите скомпилированный whl отсюда.
    Ответ написан более двух лет назад
    Комментировать
    Нравится 1 Комментировать
Оценили как «Нравится»
  • ← Предыдущие
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Следующие →
Самые активные сегодня
  • w3bsmes
    Alice
    • 9 ответов
    • 0 вопросов
  • sergey-gornostaev
    Сергей Горностаев
    • 6 ответов
    • 0 вопросов
  • Василий Банников
    • 6 ответов
    • 0 вопросов
  • 0xD34F
    0xD34F
    • 6 ответов
    • 0 вопросов
  • rPman
    • 5 ответов
    • 0 вопросов
  • DanceM
    Dance Macabre
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации