Всем привет, столкнулся с тем, что нет в интернете годного примера по реализации прогесс бара с привязкой к скачиванию с помощью Qt5. В моей программенужно сделать несколько кнопок со скачиванием файлов, но я нигде не могу найти информацию, как именно можно реализовать процесс скачивания, чтобы пользователь видел это. На данный момент думаю, что мои функции скачивания не подойду, но всё равно приложу.
На основе этой функции написаны и остальные:
def save_rutoken(link3):
filename = link3.split('/')[-1]
print (filename)
r = requests.get(link3)
open(filename, 'wb').write(r.content)
save_rutoken = tk.Label(win, text='Рутокен скачан', fg='green', bg='#80A6FF', font=('Arial',12))
save_rutoken.pack()
save_rutoken.place(x=190, y=37)
p = Process(target=save_rutoken)
p.start()
print('something')
link3 это переменная содержащая в себе ссылку на скачивание.
вот так выглядит сам интерфейс визуально:
код интерфейса:
from multiprocessing import Process
from PyQt5 import QtCore, QtGui, QtWidgets
import requests
link3 = 'https://download.rutoken.ru/Rutoken/Drivers/Current/rtDrivers.exe'
class Ui_UTM(object):
def setupUi(self, UTM):
UTM.setObjectName("UTM")
UTM.resize(547, 303)
UTM.setSizeGripEnabled(False)
UTM.setModal(False)
self.download_rutoken = QtWidgets.QPushButton(UTM)
self.download_rutoken.setGeometry(QtCore.QRect(20, 10, 121, 51))
self.download_rutoken.setObjectName("download_rutoken")
self.download_utm = QtWidgets.QPushButton(UTM)
self.download_utm.setGeometry(QtCore.QRect(150, 10, 121, 51))
self.download_utm.setObjectName("download_utm")
self.download_desktop = QtWidgets.QPushButton(UTM)
self.download_desktop.setGeometry(QtCore.QRect(280, 10, 121, 51))
self.download_desktop.setObjectName("download_desktop")
self.download_vpn = QtWidgets.QPushButton(UTM)
self.download_vpn.setGeometry(QtCore.QRect(410, 10, 121, 51))
self.download_vpn.setObjectName("download_vpn")
self.status_text = QtWidgets.QLabel(UTM)
self.status_text.setGeometry(QtCore.QRect(190, 90, 141, 31))
self.status_text.setObjectName("status_text")
self.proress_to_rutoken = QtWidgets.QProgressBar(UTM)
self.proress_to_rutoken.setGeometry(QtCore.QRect(20, 70, 131, 23))
self.proress_to_rutoken.setProperty("value", 24)
self.proress_to_rutoken.setObjectName("proress_to_rutoken")
self.proress_to_rutoken_2 = QtWidgets.QProgressBar(UTM)
self.proress_to_rutoken_2.setGeometry(QtCore.QRect(150, 70, 131, 23))
self.proress_to_rutoken_2.setProperty("value", 24)
self.proress_to_rutoken_2.setObjectName("proress_to_rutoken_2")
self.proress_to_rutoken_3 = QtWidgets.QProgressBar(UTM)
self.proress_to_rutoken_3.setGeometry(QtCore.QRect(280, 70, 131, 23))
self.proress_to_rutoken_3.setProperty("value", 24)
self.proress_to_rutoken_3.setObjectName("proress_to_rutoken_3")
self.proress_to_rutoken_4 = QtWidgets.QProgressBar(UTM)
self.proress_to_rutoken_4.setGeometry(QtCore.QRect(410, 70, 131, 23))
self.proress_to_rutoken_4.setProperty("value", 24)
self.proress_to_rutoken_4.setObjectName("proress_to_rutoken_4")
self.pushButton = QtWidgets.QPushButton(UTM)
self.pushButton.setGeometry(QtCore.QRect(100, 180, 141, 51))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(UTM)
self.pushButton_2.setGeometry(QtCore.QRect(300, 180, 141, 51))
self.pushButton_2.setObjectName("pushButton_2")
self.status_bar = QtWidgets.QLabel(UTM)
self.status_bar.setGeometry(QtCore.QRect(20, 119, 521, 41))
self.status_bar.setText("")
self.status_bar.setObjectName("status_bar")
self.retranslateUi(UTM)
QtCore.QMetaObject.connectSlotsByName(UTM)
self.add_functions()
def retranslateUi(self, UTM):
_translate = QtCore.QCoreApplication.translate
UTM.setWindowTitle(_translate("UTM", "UTM Настройка"))
self.download_rutoken.setText(_translate("UTM", "Скачать Рутокен"))
self.download_utm.setText(_translate("UTM", "Скачать UTM "))
self.download_desktop.setText(_translate("UTM", "Скачать Desktop DxBx"))
self.download_vpn.setText(_translate("UTM", "Скачать Open VPN"))
self.status_text.setText(_translate("UTM", "Статус обработки запроса:"))
self.pushButton.setText(_translate("UTM", "Настроить Брандмауэр"))
self.pushButton_2.setText(_translate("UTM", "Перезапустить службы"))
def add_functions(self):
self.download_rutoken.clicked.connect(self.rutoken_download)
def rutoken_download(self):
filename = link3.split('/')[-1]
print(filename)
r = requests.get(link3)
open(filename, 'wb').write(r.content)
p = Process(target=self.rutoken_download)
p.start()
print('something')
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
UTM = QtWidgets.QDialog()
ui = Ui_UTM()
ui.setupUi(UTM)
UTM.show()
sys.exit(app.exec_())