Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

PyQt5, minecraft_launcher_lib, нужно сделать работающий прогресс бар

Ягит Лер Ученик (120), закрыт 3 недели назад
Помогите, нужно сделать прогресс бар для minecraft_launcher_lib. В документации есть оффициальный туториал для консольной версии, меня интересует progress bar(значение от 0 до 100). Вот документация , заранее спасибо
Дополнен 3 недели назад
Пример консольной версии https://habr.com/ru/sandbox/206928/
Дополнен 3 недели назад
Я использую PyQt5, соответственное прогресс бар тоже должен быть на PyQt5
Лучший ответ
Иван Владимирович Профи (779) 3 недели назад
 pip install minecraft-launcher-lib PyQt5 
 import sys 
from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar, QVBoxLayout, QWidget
from PyQt5.QtCore import QThread, pyqtSignal
import minecraft_launcher_lib
import os

class DownloadThread(QThread):
progress_changed = pyqtSignal(int)

def run(self):
options = {
"username": "Player",
"uuid": "user-uuid",
"token": "user-token",
"version": "1.16.5",
"path": os.path.expanduser("~/.minecraft"),
"callback": {
"setStatus": self.set_status,
"setProgress": self.set_progress,
}
}

minecraft_launcher_lib.install.install_minecraft_version("1.16.5", os.path.expanduser("~/.minecraft"), callback=options["callback"])

def set_status(self, text):
print(text)

def set_progress(self, progress):
self.progress_changed.emit(int(progress * 100))

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()

self.setWindowTitle("Minecraft Downloader")
self.setGeometry(100, 100, 400, 200)

self.progress_bar = QProgressBar(self)
self.progress_bar.setGeometry(50, 80, 300, 30)
self.progress_bar.setMaximum(100)

self.download_thread = DownloadThread()
self.download_thread.progress_changed.connect(self.update_progress)
self.download_thread.start()

def update_progress(self, value):
self.progress_bar.setValue(value)

if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Остальные ответы
Похожие вопросы