• Как в pyqt5 сделать кнопку некликабельной(неактивной)?

    sanya84
    @sanya84
    Фанатик Python 3
    import sys
    from PyQt5.QtWidgets import (QWidget, QApplication, QPushButton, QSlider,
        QVBoxLayout, QMessageBox)
    from PyQt5.QtCore import Qt
    
    
    class QButtonExample(QWidget):
        def __init__(self):
            super().__init__()
    
            self.initUI()
    
    
        def initUI(self):
            self.setGeometry(300, 300, 200, 150)
            self.button = QPushButton(self, text="Ты не сможешь на меня нажать!")
            self.button.setEnabled(False)
            self.button.clicked.connect(self.handleButton)
    
            slider = QSlider(Qt.Horizontal, self)
            slider.setFocusPolicy(Qt.NoFocus)
            slider.setGeometry(30, 40, 100, 30)
            slider.valueChanged[int].connect(self.changeValue)
    
            boxLayout = QVBoxLayout(self)
            # boxLayout.addStretch(1)
            boxLayout.addWidget(self.button)
            boxLayout.addWidget(slider)
    
    
        def changeValue(self, value):
            if value > 50:
                self.button.setEnabled(True)
            else:
                self.button.setEnabled(False)
    
        def handleButton(self):
            QMessageBox.information(None, 'Сообщение от программы', "Да ладно! у тебя получилось!")
    
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        myApplication = QButtonExample()
        myApplication.show()
        sys.exit(app.exec_())
    Ответ написан
    Комментировать
  • Как справиться с ошибкой 'utf-8' codec can't decode byte 0xc0 in position 199: invalid start byte?

    @Taya93 Автор вопроса
    Брест
    все, нашла решение.
    .content.decode('Windows-1251')
    это в кодировке Windows-1251
    Ответ написан
    Комментировать
  • Как справиться с ошибкой 'utf-8' codec can't decode byte 0xc0 in position 199: invalid start byte?

    @angernicky
    Я тоже решил этот баг. Вообщем нужно использовать либо CP866, или Windows-1251 кодировку.
    Ответ написан
    1 комментарий
  • Как получить доступ к Ajax контенту во время парсинга?

    @nirvimel
    В общем случае, при помощи парсинга html, не возможно получить страницу в том виде в который ее приводят ее собственные джаваскрипты при загрузке потому, что парсер - не браузер, он не исполняет джаваскрипты.
    В частных случаях можно вынуть из текста скрипта все urlы по которым идут ajax запросы, производить все эти запросы в своем коде и парсить результаты. Тут куча подводных камней - во-первых, параметры ajax запроса могут быть спрятаны в коде каким-нибудь не тривиальным образом, во-вторых нужно правильно выставить все заголовки запроса со всеми куками (которыми скрипты со страницы так же могут манипулировать), потом не забыть правильно задать referrer. В общем случае у скриптов на странице всегда остается возможность, используя какие-нибудь динамически меняющиеся параметры, запутать свою работу так, что для такой страницы создать парсер будет невозможно.
    Радикально иной вариант - использовать настоящий браузер (через Sillentium, например), который исполняет все скрипты и, с точки зрения противоположной стороны, неотличим от живого пользователя. Это решает все проблемы с хитрыми ajax-ами. Но это уже совсем другой порядок объемов потребляемых ресурсов и скорости. Если, например, на самом дешевом vps (с 128 Мб памяти) на гигабитном канале можно парсить в 50-100 потоков. Даже из расчета по несколько секунд на ожидание + обработку каждой страницы получаем 10-20 расперсенных страниц в секнду. Теперь если перейти на Sillentium + Webkit, то 128 Мб уже не хватает для запуска даже одного потока. Если даже запускать все это на своем домашнем десктопе с гигабайтами памяти (с vps в качестве прокси), то можно получить максимум несколько расперсенных страниц в секунду. То есть парсинг через полноценный браузер не конкурент парсерам типа lxml + requests/liburl.
    Ответ написан
    Комментировать