컴퓨터/Python

pyqt5 qlistwidget 바로바로 표시하기

풍경소리^^ 2022. 9. 23. 05:45
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QPushButton, \
    QHeaderView, QHBoxLayout, QVBoxLayout, QGridLayout, QAbstractScrollArea, QLabel, QListWidget, \
    QFileDialog, QMessageBox, QTextEdit, QAbstractItemView, QLineEdit, QGroupBox, QRadioButton, \
    QListView
from PyQt5.QtCore import Qt, QTimer
# from PyQt5 import QtGui
from PyQt5.QtGui import QTextCursor
import sys
import pandas as pd # pip install pandas
import os
import io
import secret
import xlwings as xw
import re
import time

class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.window_width, self.window_height = 1150, 600
        self.resize(self.window_width, self.window_height)
        self.setWindowTitle('one by one')

        self.cnt = 0

        ##### layout_main #####
        layout_main = QHBoxLayout()
        self.setLayout(layout_main)

        ##### layout_1 #####
        layout_1 = QVBoxLayout()

        self.pushbutton11 = QPushButton("실행")
        # self.pushbutton11.clicked.connect(self.one_by_one_additem)
        self.pushbutton11.clicked.connect(self.fn_run)
        
        layout_1.addWidget(self.pushbutton11)

        self.listwiget12 = QListWidget()
        layout_1.addWidget(self.listwiget12)

        layout_main.addLayout(layout_1)

        self.timer = QTimer()
        

    # def one_by_one_additem(self):
    #     self.cnt += 1
    #     self.listwiget12.addItem(str(self.cnt))
    #     print(self.cnt, sep='\n')

    # def fn_run(self):
    #     cnt = 0
    #     for i in range(1000):
    #         cnt += 1
    #         # self.one_by_one_additem(str(i))
    #         self.listwiget12.addItem(str(cnt))
    #         # self.listwiget12.repaint()
    #         # print(cnt, sep='\n')
    #         self.listwiget12.item(i).setHidden(True)
    #     self.z = 0

        

    def fn_run(self):
        self.listwiget12.clear()
        for i in range(0,100):
            self.listwiget12.addItem(str(i))
            self.listwiget12.item(i).setHidden(True)
            self.z = 0
            self.timer.start(10)
            self.timer.timeout.connect(self.nextItem)    

    def nextItem(self):
        try:
            self.listwiget12.item(self.z).setHidden(False)
            self.listwiget12.repaint() 
            self.z += 1
        except AttributeError:
            self.timer.stop()
            self.z = 0
            QMessageBox.about(self, "작업완료", "작업을 완료하였습니다.")

if __name__ == '__main__':

    app = QApplication(sys.argv)
    app.setStyleSheet('''
        QWidget {
            font-size: 17px;
        }
    ''')
    
    myApp = MyApp()
    myApp.show()

    try:
        sys.exit(app.exec())
    except SystemExit:
        print('Closing Window...')