• Как распаковать скачанный архив в приложение python + pyqt5 GUI?

    @IgnorGTO Автор вопроса
    Alexa2007,
    Проблему вы решили но
    вопрос все равно остался почему я не как не могу вызвать функцию из другого класса допустим теперь после распаковки архива мне нужно скрыть кнопку скачать к примеру
    должно быть же какое-то решение
  • Как распаковать скачанный архив в приложение python + pyqt5 GUI?

    @IgnorGTO Автор вопроса
    Alexa2007,
    Спасибо понял свои ошибки и ещё один вопрос пожалуйста
    Как после окончания скачивания начать распаковку без участия пользователя
    Автоматический ?
  • Как распаковать скачанный архив в приложение python + pyqt5 GUI?

    @IgnorGTO Автор вопроса
    Alexa2007,
    Проблема в том что я не могу понять в каком месте запускать скачивание пытался
    сделать от сюда
    else:
                # Чтобы было 100%
                self.progress.emit(total_size)
                extract_zip('Mods.zip', 'C://Users//Ignor-GTO//PycharmProjects//GTO-Team')
                return

    но тогда программа крашится после скачивания файла
  • Как распаковать скачанный архив в приложение python + pyqt5 GUI?

    @IgnorGTO Автор вопроса
    Не получается

    # import dload
    #
    # dload.save_unzip("https://file-examples.com/wp-content/uploads/2017/02/zip_2MB.zip", "/extract/here")
    import os
    import shutil
    import subprocess
    import sys
    import zipfile
    from multiprocessing import process
    
    from PyQt5.QtWidgets import QApplication, QProgressBar, QWidget, QLineEdit, QPushButton, \
        QVBoxLayout, QHBoxLayout
    from PyQt5.QtCore import QThread, pyqtSignal
    import urllib.request
    
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    
    
    class Downloader(QThread):
        # Сигнал о количестве данных (PyQt5)
        preprogress = pyqtSignal(float)
        progress = pyqtSignal(float)
    
        # fileUrl - url - файла, включая сам файл
        # filename - имя файла
        def __init__(self, fileUrl, fileName):
            QThread.__init__(self)
            # Флаг инициализации
            self._init = False
            self.fileUrl = fileUrl
            self.fileName = fileName
    
        def run(self):
            # тест на локальных данных, но работать должно и с сетью
            urllib.request.urlretrieve(self.fileUrl, self.fileName, self._progress)
    
        def _progress(self, block_num, block_size, total_size):
            if not self._init:
                self.preprogress.emit(total_size)
                self._init = True
    
            # Расчет текущего количества данных
            downloaded = block_num * block_size
            if downloaded < total_size:
                # Отправляем промежуток
                self.progress.emit(downloaded)
            else:
                # Чтобы было 100%
                self.progress.emit(total_size)
    
    
    class MainWindow(QWidget):
        def __init__(self):
            super().__init__()
            self.setGeometry(100, 100, 600, 180)
            self.setWindowTitle('GTO Games')
            self.downloader = None
            self.fileUrl = QLineEdit('http://site.com/dw/Mods.zip')
            self.buttonga = QPushButton('Играть', self)
            self.loadButton = QPushButton('Скачать', self)
            self.buttonga.move(10, 10)
            self.loadButton.move(10, 50)
    
            self.unzipButton = QPushButton('Распаковать', self)
            self.unzipButton.move(120, 10)
            self.unzipButton.clicked.connect(self.unzipp)
    
            self.loadButton.clicked.connect(self._loadFile)
            hbox = QHBoxLayout()
            hbox.addWidget(self.loadButton)
            vbox = QVBoxLayout(self)
            vbox.addLayout(hbox)
            self.bar = QProgressBar()
            vbox.addWidget(self.bar)
    
        def initializeUI(self):
            self.buttonga.clicked.connect(self.exerun)
            # self.unzipButton = QPushButton('Распаковать', self)
            # self.unzipButton.move(120, 10)
            # self.unzipButton.clicked.connect(self.unzipp)
            self.show()
    
        def _loadFile(self):
            ar = self.fileUrl.text().split('/')
            if len(ar) == 0:
                return
            fileName = f'_{ar[len(ar) - 1]}'
    
            self._download = Downloader(self.fileUrl.text(), fileName)
            # Устанавливаем максимальный размер данных
            self._download.preprogress.connect(lambda x: self.bar.setMaximum(round(x)))
            # Промежуточный/скачанный размер
            self._download.progress.connect(lambda d: self.bar.setValue(round(d)))
            self._download.start()
            print("D_Start")
            self.loadButton.hide()
    
        def exerun(self):
            # z = zipfile.ZipFile('Mods.zip', 'w')  # Создание нового архива
            # for root, dirs, files in os.walk('./'):  # Список всех файлов и папок в директории folder
            #     for file in files:
            #         z.write(os.path.join(root, file))  # Создание относительных путей и запись файлов в архив
            #
            # z.close()
            args = [r".\Vintagestory.exe", "--connect=xx.xxx.xxx.xx", "--pw=9029"]
            subprocess.call(args)
    
        def unzipp(self):
            fantasy_zip = zipfile.ZipFile('C:\\Users\\Ignor-GTO\\PycharmProjects\\GTO-Team\\Mods.zip')
            fantasy_zip.extractall('C:\\Users\\Ignor-GTO\\PycharmProjects\\GTO-Team')
    
            fantasy_zip.close()
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = MainWindow()
        window.show()
        sys.exit(app.exec_())
  • Что я делаю не так discord.py функция on_reaction_add?

    @IgnorGTO Автор вопроса
    Проверка на message_id для отслеживания в каком сообщение отслеживать emoji