Friday, July 29, 2016

How to dynamically update in PyQt without crashing GUI


[www.softscients.web.id] Penulis sedang membuat aplikasi berbasis GUI menggunakan PyQt yang didalamnya menggunakan proses looping untuk mengola data ratusan file dalam 1 folder. Aplikasi akan menjadi not responding dikarenakan




Untuk hal tersebut, penulis menggunakan function PyQt untuk melakukan update component GUI yaitu QtGui.QApplication.processEvents()





from PyQt4 import QtGui, QtCore
import sys
import model_gui
import time as waktu
class Utama (QtGui.QMainWindow, model_gui.Ui_MainWindow):
    def __init__(self,parent=None):
        super(Utama,self).__init__(parent)
        self.setupUi(self)
        self.setWindowTitle('www.softscients.web.id')
        self.pushButton.clicked.connect(self.buka)
        self.jalan = True
    def buka(self):
        i = 0
        while True:
            if i>100000:
                break
            self.label.setText(str(i))
            QtGui.QApplication.processEvents()
            i = i+1
            waktu.sleep(1.0/1000) #bikin jeda!

        
def main():
    app = QtGui.QApplication(sys.argv)
    form = Utama()
    form.show()
    app.exec_()

if __name__ == '__main__':
    main()


 



Tapi sayangnya itu tidak menggunakan thread, (sehingga ketika run) akan sulit dihentikan (close secara normal)


No comments:

Post a Comment