Time.sleep application'un başlamasına izin vermediği için ProgressBar'ın chunk'una animasyon verilmiyor

# 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 ?

Yanlış.

Hata mı alıyorsunuz?

Şu örneği dener misiniz?

import sys
from PySide2.QtCore import *
from PySide2.QtWidgets import *


class Bar(QMainWindow):
	def __init__(self):
		super().__init__()
		self.resize(400, 300)

		self.startButton = QPushButton("Start", self)
		self.startButton.clicked.connect(self.changeValue)

		self.progressbar = QProgressBar(self)
		self.progressbar.setGeometry(100, 100, 300, 30)

	def changeValue(self):
		self.timer = QTimer()
		self.timer.timeout.connect(self.changeValue)
		self.timer.start(100)

		self.progressbar.setValue(self.progressbar.value()+1)

if __name__ == "__main__":
	app = QApplication(sys.argv)
	window = Bar()
	window.show()
	sys.exit(app.exec_())
1 Beğeni

Şu kısmı eksik yaptığım için olmamış sanırım. Teşekkürler :+1: