Задать вопрос
  • Каким способом можно добавить функцию обработчик к стандартным классам лога*?

    Pauk_Code
    @Pauk_Code Автор вопроса
    class QTextEditLogger(logging.Handler):
        def __init__(self, parent):
            super().__init__()
            self.widget = QPlainTextEdit(parent)
            self.widget.setReadOnly(True)
    
        def emit(self, record):
            msg = self.format(record)
            self.widget.appendPlainText(msg)
    Ответ написан
    Комментировать
  • Как сделать вертикальный прокручиваемый список из элементов с ограниченной высотой?

    Pauk_Code
    @Pauk_Code Автор вопроса
    Решение

    from PySide6.QtWidgets import *
    from PySide6.QtGui import *
    from PySide6.QtCore import *
    
    import sys
    
    class Color(QWidget):
    
        def __init__(self, color):
            super(Color, self).__init__()
            self.setAutoFillBackground(True)
    
            palette = self.palette()
            palette.setColor(QPalette.Window, QColor(color))
            self.setPalette(palette)
    
    class UrlImage(QLabel):
        ImagesLoaded = {}
    
        def __init__(self, url : str, *args, **kwargs):
            super().__init__(*args, **kwargs)
            
            self.image = QImage()
    
            if not self.ImagesLoaded.get(url):
                import requests
                content = requests.get(url).content
                self.image.loadFromData(content)
                self.ImagesLoaded[url] = content
            else:
                self.image.loadFromData(self.ImagesLoaded[url])
    
            self.pixmap = QPixmap.fromImage(self.image)
            self.setPixmap( self.pixmap )
    
        def resizeEvent(self, event):
            self.setPixmap(self.pixmap.scaled(event.size().width(), event.size().height()))
    
    class UserAvatar(QWidget):
        def __init__(self, contact, *args, **kwargs):
            super().__init__(*args, **kwargs)
    
            self.setFixedSize(200, 40)
    
    class MainWindow(QMainWindow):
        def resizeEvent(self, event):
            self.contactsScroll.setGeometry(0,0, 200, self.height())
            QMainWindow.resizeEvent(self, event)
    
        def __init__(self):
            super(MainWindow, self).__init__()
            self.setWindowTitle("Hello World")
            self.setCentralWidget(UrlImage("https://c0.wallpaperflare.com/preview/115/811/694/simple-background-abstract-slick.jpg"))
            
            self.contactsScroll = QScrollArea(self)
            self.contactsScroll.setStyleSheet("""background-color: rgba(0,0,0,0);
                                              """)
            layout = QVBoxLayout()
            layout.setContentsMargins(0,0,0,0)
            layout.setSpacing(0)
            self.contactsScroll._layout = layout
    
            for i in range (10):
                self.addContact("NICKNAME", "https://www.svgrepo.com/show/384674/account-avatar-profile-user-11.svg", "SERVICE_NAME", "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSpJ27FVfkM_2ubo4TV6iQXfET93AFER9M6xA&s")
                self.addContact("NICKNAME", "https://www.svgrepo.com/show/384674/account-avatar-profile-user-11.svg", "SERVICE_NAME", "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSpJ27FVfkM_2ubo4TV6iQXfET93AFER9M6xA&s")
                self.addContact("NICKNAME", "https://img.freepik.com/premium-vector/professional-male-avatar-profile-picture-employee-work_1322206-66590.jpg", "SERVICE_NAME", "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR8aMugg7LWDXqkWc-9JlApM4MLPXhi-EPDYA&s")
            
            self.show()
    
        def addContact(self, nickname : str, avatar_url : str, service_name : str, service_url : str) -> None:
            widget = QWidget()
            widget.setGeometry(0,0,200, 50)
            widget.setFixedHeight(50)
            widget.setFixedWidth(200)
            widget.setStyleSheet("""background-color: rgba(0,0,0,155)""")
    
            labelNickname = QLabel(nickname, parent=widget)
            labelNickname.move(widget.height(), 0)
    
            avatar = UrlImage(avatar_url, parent=widget)
            avatar.resize(widget.height(), widget.height())
            avatar.setStyleSheet("background-color: rgba(0,0,0,0)")
    
            serviceImage = UrlImage(service_url, parent=avatar)
            serviceImage.resize(avatar.width() / 2, avatar.height() / 2)
            serviceImage.move(avatar.width() / 2, avatar.height() / 2)
            
            self.contactsScroll._layout.addWidget(widget)
            self.contactsScroll._layout.addStretch()
            
            widget2 = QWidget()
            widget2.setLayout(self.contactsScroll._layout)
            self.contactsScroll.setWidget(widget2)
    
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        w = MainWindow()
        app.exec()
    Ответ написан
    Комментировать
  • Как интегрировать исходный код для выполнения в поток?

    Pauk_Code
    @Pauk_Code Автор вопроса
    wait_for_thread_wrap_done CompileString([[
    module('glua-stock', package.seeall)
    return coroutine.wrap(function() ]] .. kontent .. [[ end)
    ]], path)()


    export wait_for_thread_wrap_done = (potok) ->
        while true
            statys, msg = pcall potok
            unless statys
                if msg == "cannot resume dead coroutine"
                    break 
                else
                    error msg
            else
                coroutine.yield!
    Ответ написан
    Комментировать
  • Почему возникает ошибка*?

    Pauk_Code
    @Pauk_Code Автор вопроса
    В общем решил перезагрузкой модулей парсинга кода.

    if dofile("Функции/Платформа/ФункцияПроверкиЗапущенЛиGarrysModИлиНет.moon")!
        Try = dofile "Функции/ФункцияПоимкиИсключения.moon"
    
        _loadfile = loadfile
    
        export loadfile = (path) ->
            Try (->
                _loadfile path),
             catch: (e) ->
                if e\find "Failed to parse"
                    reloadlulpeg!
                    reloadmoonscript!
                    print "lulpeg/moonscript перезагружен. Решение проблемы отказа в парсе moon кода."
                    _loadfile path
                else
                    error e
    Ответ написан
    Комментировать
  • Как экспортировать экземпляр класса из DLL при LoadLibrary?

    Передать указатель на экземпляр класса. Допустим в DLL при импортировании через какой ни будь интерфейс вызова .

    .h/.cpp
    extern "C" __declspec(dllexport) AClass * GetExemplarOfAClass();
    Ответ написан
  • Как поместить QImage в setCentralWidget?

    Pauk_Code
    @Pauk_Code Автор вопроса
    64142e6e75778677187360.pngНашёл решение
    class UrlImage(QLabel):
        def __init__(self, url : str, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.image = QImage()
            import requests
            self.image.loadFromData(requests.get(url).content)
            self.setPixmap( QPixmap.fromImage(self.image))
    Ответ написан
    Комментировать
  • Как защитить какой то текст в скриптовом языке программирования?

    Скриптовые языки поддаются обфускации, посмотрите в этом направлении, а так лучше конечно писать модуль, но и на модули могут найтись свои умельцы. )
    Ответ написан
    Комментировать
  • Парсер сайта с прокси?

    Можно использовать обычные запросы на python с обвязкой с tor если кнопочки не нужно нажимать, а так если сайт требует полноценной работы то как сказали выше selenium webdriver. Из минусов selenium-a могу выделить пока что только ограниченную эмуляцию ввода/вывода/интерактива с веб страницей. Возможно это так оптимизация работает, но в этом точно есть минус.
    Ответ написан
    Комментировать
  • Почему игровые движки пишут на C++?

    В основном по причине потенциальной производительности, посмотрите в сторону dlang для сравнения.
    Ответ написан
    Комментировать
  • Что означает пропись в консоле sudo?

    Запуск последующей команды в привилегированном режиме суперпользователя. Некоторая ограничивающая политика работы системы предотвращает нарушение работы важных компонентов, что в свою очередь обеспечивает некую безопасность. При разграничении уровней доступа можно не бояться повреждения системы, но для этого необходимо знать важные моменты работы систем пакетов и контроля над источниками. С одной стороны локально это может и полезно, но с другой если в систему добавить заведомо уязвимые источники, то при такой конфигурации можно будет установить любое ПО санкционировано. sudo полезная команда для настройки системы, но крайне неудобная для пользовательских действий внутри пользовательского окружения. Как то так.
    Ответ написан
    Комментировать
  • Как выделить столько динамической памяти для переменной, сколько нужно?

    В первом случае ты получаешь длинну статического массива, sizeof работает по принципу sizeof(char)*StaticLength.
    Во втором случае ты получаешь размер первого элемента, на который указывает p. *p --> p[0] где sizeof(p[0] --> char), тогда как *(p+1) --> p[1]
    %)
    Ответ написан
    Комментировать
  • Куда делся string из файла string в Visual Studio?

    Создавайте пустой проект по умолчанию, всегда. Тогда не столкнетесь с лишними трудностями.

    По поводу типa string - вы какой версией msvc пользуетесь?
    Ответ написан
  • С чего начать изучать программирование?

    Правильно говорит. Вообще выбирай направление не коррелирующие со специализацией если специализацию нужно изменить на корню. А там для аналитики можно что угодно, лучше какие ни будь overpowered языки по типу python-a например, при написании кода времени будет занимать меньше чем например на том же C++.
    Ответ написан
    Комментировать
  • Лицензирование ПО на основе сертификата?

    Pauk_Code
    @Pauk_Code Автор вопроса
    В общем решил путем шифрования секретного ключа.
    Ответ написан
    Комментировать
  • Как вывести данные из масива js?

    Получаешь из массива ассоциативный массив и обращаешься к элементу по ключу.

    Вот таким значит вопросам есть место быть, а мои удаляют :/
    Ответ написан
    Комментировать
  • Чем отличается код дилетанта от профессионала?

    Дилетанты тупые, и пишут соответствующе, код обычно нагружает, профессионал видит достижение той или иной функциональности более эффективно за счет того что у профессионала опыта больше чем у дилетанта. Дилетанты код замусоривают из-за того что не умеют соответствовать нормам, которые приняты в семантики того или иного языка программирования (ЯП). Дилетант код пишет дольше чем профессионал, дилетантам платят меньше :D Дилентант не знает что платят не за умение программировать. Все наверное.
    Ответ написан
    Комментировать
  • Какой встраиваемый язык выбрать: Lua или Python?

    Python решает практически любые задачи, по отношению к луа там огромнейшее кол-во библиотек и разного рода реализаций, когда Lua сама по себе чистая ВМ с минимальным функционалом (lua pipe, io и тд). Для встраивания лучше использовать Lua, потому что в ней нет ничего лишнего.
    Ответ написан
    1 комментарий
  • Java или Python для разработки мобильных приложений?

    Java не устареет. Есть порты питона под джаву (Jython), если прям хочется писать на питоне, пожалста, включайте в проект, делайте загрузчик и радуйтесь. Но это в какой-то мере скажется на производительности.

    Ссылка на страничку загрузки >ТЫК<

    Для написания нативных функций используют C++/Java Native Interface, под Джавой нативных приложений не пишут! Прочтите об устройстве Java VM.
    Ответ написан
    Комментировать
  • Как создать загрузочную флешку с iso-образами?

    Могу посоветовать криворукий multisystem. Работает нормально, автоматически добавляет имена в меню, сразу встроено несколько загрузчиков (+ grub4dos, syslinux).

    Установка Ubuntu
    #!/bin/bash
    sudo apt-add-repository 'deb liveusb.info/multisystem/depot all main'
    wget -q -O - liveusb.info/multisystem/depot/multisystem.asc | sudo apt-key add -
    sudo apt-get update
    sudo apt-get install multisystem
    Ответ написан
    Комментировать