# importing libraries
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
import time
class Example(QWidget):
def __init__(self):
super().__init__()
# calling initUI method
self.initUI()
# method for creating widgets
def initUI(self):
# creating progress bar
self.pbar = QProgressBar(self)
# setting its geometry
self.pbar.setGeometry(30, 40, 200, 25)
# creating push button
self.btn = QPushButton('Start', self)
# changing its position
self.btn.move(40, 80)
# adding action to push button
self.btn.clicked.connect(self.doAction)
# setting window geometry
self.setGeometry(300, 300, 280, 170)
# setting window action
self.setWindowTitle("Python")
# showing all the widgets
self.show()
# when button is pressed this method is being called
def doAction(self):
# setting for loop to set value of progress bar
for i in range(101):
# slowing down the loop
time.sleep(0.05)
# setting value to progress bar
self.pbar.setValue(i)
# main method
if __name__ == '__main__':
# create pyqt5 app
App = QApplication(sys.argv)
# create the instance of our Window
window = Example()
# start the app
sys.exit(App.exec())
Gördüğünüz kodlar geeksforgeeks’ten alındı. Bunun yanında pek çok örneği de inceledim ancak sanırım sadece bende QProgressBar’ın chunkuna animasyon verilmiyor.
time.sleep kullanılıyor sürekli haklı olunarak ancak nedense ben kullanırken application başlatılamıyor.
time.sleep kullanmadan progressbarın chunk’una nasıl animasyon verebilirim ?
qtimer classıyla denedim. Bunun da örneği vardı.
self.count = 0
self.timer = QTimer()
self.timer.start(10000)
if self.timer.isActive():
while self.count < 100:
self.count += 1
self.progressBar.setValue(self.count)
if self.count > 100:
break
Bunu yaptığımda chunk 100% oluyor ancak animasyonla olması gerekiyor. Yine bir time.sleep ihtiyacı dğuyor çünkü barın yavaş yavaş fullenmesi gerekiyor.
QBasicTimer örneği gördüm o da QTimer classıyla çok da farklı değil.
Time.sleep olmadan nasıl QProgressBar’ın chunkunu hareketlendirebilirim ?