久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

    <i id='6tJ2c'><tr id='6tJ2c'><dt id='6tJ2c'><q id='6tJ2c'><span id='6tJ2c'><b id='6tJ2c'><form id='6tJ2c'><ins id='6tJ2c'></ins><ul id='6tJ2c'></ul><sub id='6tJ2c'></sub></form><legend id='6tJ2c'></legend><bdo id='6tJ2c'><pre id='6tJ2c'><center id='6tJ2c'></center></pre></bdo></b><th id='6tJ2c'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='6tJ2c'><tfoot id='6tJ2c'></tfoot><dl id='6tJ2c'><fieldset id='6tJ2c'></fieldset></dl></div>
      <legend id='6tJ2c'><style id='6tJ2c'><dir id='6tJ2c'><q id='6tJ2c'></q></dir></style></legend>

      <small id='6tJ2c'></small><noframes id='6tJ2c'>

      • <bdo id='6tJ2c'></bdo><ul id='6tJ2c'></ul>
      <tfoot id='6tJ2c'></tfoot>

    1. 如何在python中將文件保存為excel時顯示進度條?

      How to show progress bar while saving file to excel in python?(如何在python中將文件保存為excel時顯示進度條?)
      <tfoot id='2yogC'></tfoot>

      <i id='2yogC'><tr id='2yogC'><dt id='2yogC'><q id='2yogC'><span id='2yogC'><b id='2yogC'><form id='2yogC'><ins id='2yogC'></ins><ul id='2yogC'></ul><sub id='2yogC'></sub></form><legend id='2yogC'></legend><bdo id='2yogC'><pre id='2yogC'><center id='2yogC'></center></pre></bdo></b><th id='2yogC'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='2yogC'><tfoot id='2yogC'></tfoot><dl id='2yogC'><fieldset id='2yogC'></fieldset></dl></div>
        <tbody id='2yogC'></tbody>

      <small id='2yogC'></small><noframes id='2yogC'>

                <bdo id='2yogC'></bdo><ul id='2yogC'></ul>

                <legend id='2yogC'><style id='2yogC'><dir id='2yogC'><q id='2yogC'></q></dir></style></legend>
              • 本文介紹了如何在python中將文件保存為excel時顯示進度條?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                問題描述

                如果你能幫助我,不勝感激.將文件保存到 Excel 時,我無法顯示進度條.我想要實現的是顯示進度條,同時從 pandas dataframe 也從 qwidgettable 保存 excel 文件,因為它需要時間才能保存.在下載或保存 excel 文件之前,我希望該進度條關閉.我試著在網上查看,但我看不到我的查詢的具體答案.到目前為止,這是我創建的編譯代碼.

                Appreciate if you could help me. I have a trouble showing up the progress bar while saving file to excel. What I want to achieve is to show a progress bar while saving excel file from a pandas dataframe also from qwidgettable as it takes time before it saves. Until the excel file is downloaded or saved i want that progress bar to close. I tried looking over the net but I cant see specific answers to my query. So far, this is the compiled codes I have created.

                import sys
                from PyQt5 import QtWidgets, QtCore
                import pandas as pd
                import time
                import psutil
                
                
                class ThreadClass(QtCore.QThread):
                   updateProgressBar = QtCore.pyqtSignal(int)
                
                   def __init__(self, parent=None):
                       super(ThreadClass, self).__init__(parent)
                
                   def run(self):
                       while True:
                           val = int(psutil.cpu_percent())
                           time.sleep(1)
                           self.updateProgressBar.emit(val)
                
                class Window(QtWidgets.QMainWindow):
                    def __init__(self):
                        super(Window, self).__init__()
                        self.setGeometry(50,50,500,500)
                        self.setWindowTitle('PyQt Tuts')
                        self.table()
                
                    def updateProgressBar(self, val):
                        self.progressBar.setValue(val)
                
                    def table(self):
                        self.tableWidget = QtWidgets.QTableWidget()
                        self.tableWidget.setGeometry(QtCore.QRect(220, 100, 411, 392))
                        self.tableWidget.setColumnCount(2)
                        self.tableWidget.setRowCount(5)
                        self.tableWidget.show()
                
                        item = QtWidgets.QTableWidgetItem()
                        item.setText("Amount")
                        self.tableWidget.setHorizontalHeaderItem(1, item)
                
                        records = [
                            ['Product 1', 1000],
                            ['Product 2', 500],
                            ['Product 3', 600],
                            ['Product 4', 300],
                            ['Product 5', 800],
                        ]
                
                        self.df = pd.DataFrame(records, columns=['Name', 'Amount'])
                
                        for r in range(5):
                            for c in range(2):
                                table_item = str(self.df.iloc[r, c])
                                self.tableWidget.setItem(r, c, QtWidgets.QTableWidgetItem(table_item))
                
                        self.pb_extract = QtWidgets.QPushButton(self.tableWidget)
                        self.pb_extract.setGeometry(QtCore.QRect(10, 200, 75, 23))
                        self.pb_extract.clicked.connect(self.extract)
                        self.pb_extract.setText("EXTRACT")
                        self.pb_extract.show()
                
                    def extract(self):
                        self.lb_downloading = QtWidgets.QLabel(self.tableWidget)
                        self.lb_downloading.setGeometry(QtCore.QRect(10, 270, 81, 16))
                        self.lb_downloading.setText("Downloading..")
                        self.lb_downloading.show()
                
                        self.progressBar = QtWidgets.QProgressBar(self.tableWidget)
                        self.progressBar.setGeometry(QtCore.QRect(10, 290, 171, 10))
                        self.progressBar.show()
                
                        self.threadclass = ThreadClass()
                        self.threadclass.start()
                        self.threadclass.updateProgressBar.connect(self.updateProgressBar)
                
                        self.df.to_excel('Products.xlsx', index=False)
                        print('Download complete!')
                
                def run():
                    app = QtWidgets.QApplication(sys.argv)
                    app.setStyle("fusion")
                    w = Window()
                    sys.exit(app.exec_())
                
                run()
                

                這些代碼如下所示:

                我想要實現的是當我單擊提取按鈕時,下載進度條將關閉,直到 excel 文件完全下載/保存.

                what i want to achieve is when i click the extract button, the downloading progressbar will close until the excel file fully downloaded/saved.

                (PS 我只是得到 val = int(psutil.cpu_percent()) 的隨機值,因為我也不知道在應用程序運行時使用什么特定代碼/函數只是為了顯示告訴你我有一個進度條在移動.)

                (P.S i just get random values for val = int(psutil.cpu_percent()) because i also don't know what specific code/function to use while the app is running just to show to you that i have a progress bar moving.)

                提前謝謝你!

                推薦答案

                這類問題在SO里被問過無數次了,而且很多時候在評論里解釋過需求說明什么情況下才有可能,在哪些情況下是不可能的.所以為了避免重復同樣的事情,我將根據OP的問題在這篇文章中解釋這個主題.

                一個小部件通常用于顯示和/或從用戶那里獲取信息,QProgressBar 做第一件事,也就是說,它顯示進度信息,它不計算一下.

                A widget in general is used to show and/or obtain information from the user, and a QProgressBar does the first thing, that is, it shows the progress information, it does not calculate it.

                如果可以將任務細分為n"個子任務,則可以計算進度,因為它相當于已經完成的子任務數相對于總子任務數.

                Progress can be calculated if the task can be subdivided into "n" subtasks, since it would be equivalent to the number of subtasks already done with respect to the number of total subtasks.

                • 比如任務是上傳一個N KB的文件到服務器,那么每個子任務可以有1KB的信息,所以進度是:

                • For example if the task is to upload a N KB file to a server, then each subtask can be 1KB of information, so the progress would be:

                progress = 100 * number_of_KB_submitted/number_of_KB_of_file
                

              • 另一個例子是如果你必須復制 n 個文件,那么進度是:

              • Another example would be if you have to copy n files, then the progress would be:

                progress = 100 * number_of_copied_files / number_of_total_files
                

              • 從上面可以看出,只有任務可以細分為子任務,才能計算進度,所以如果任務不能細分,就不可能計算任何進度.

                From the above it is obvious that progress can only be calculated if the task can be subdivided into subtasks, so if the task cannot be subdivided then it is impossible to calculate any progress.

                在將 pandas 保存在 excel 中的情況下,很明顯它不能細分為n"個任務,因此無法計算其進度.

                In the case of saving the pandas in an excel it is obvious that it cannot be subdivided into "n" tasks so it will be impossible to calculate its progress.

                在使用 to_excel 將 pandas 保存在 excel 中的情況下,很明顯它不能細分為n"個任務,因此無法計算其進度.

                In the case of saving the pandas in an excel using to_excel it is obvious that it cannot be subdivided into "n" tasks so it will be impossible to calculate its progress.

                在這些情況下的解決方法是顯示繁忙的 QProgressBar:

                A workaround in those cases is to show a busy QProgressBar:

                progressbar.setRange(0, 0)
                

                在你的情況下:

                import sys
                from PyQt5 import QtWidgets, QtCore
                import pandas as pd
                import time
                
                import threading
                
                
                class ExcelWorker(QtCore.QObject):
                    started = QtCore.pyqtSignal()
                    finished = QtCore.pyqtSignal()
                
                    def execute(self, df, filename):
                        threading.Thread(target=self._execute, args=(df, filename), daemon=True).start()
                
                    def _execute(self, df, filename):
                        self.started.emit()
                        df.to_excel(filename, index=False)
                        self.finished.emit()
                
                
                class DownloaderProgressBar(QtWidgets.QWidget):
                    def __init__(self, parent=None):
                        super(DownloaderProgressBar, self).__init__(parent)
                
                        self._progressbar = QtWidgets.QProgressBar()
                
                        lay = QtWidgets.QVBoxLayout(self)
                        lay.addWidget(QtWidgets.QLabel(self.tr("Downloading..")))
                        lay.addWidget(self.progressbar)
                
                    @property
                    def progressbar(self):
                        return self._progressbar
                
                
                class Window(QtWidgets.QMainWindow):
                    def __init__(self):
                        super(Window, self).__init__()
                        self.setGeometry(50, 50, 500, 500)
                        self.setWindowTitle("PyQt Tuts")
                        self.create_table()
                
                        self.create_progressbar()
                        self.create_worker()
                
                    def create_progressbar(self):
                        self.downloader_progressbar = DownloaderProgressBar(self.tableWidget)
                        self.downloader_progressbar.setGeometry(10, 270, 170, 80)
                        self.downloader_progressbar.hide()
                
                    def create_worker(self):
                        self.worker = ExcelWorker()
                        self.worker.started.connect(self.on_started)
                        self.worker.finished.connect(self.on_finished)
                
                    def create_table(self):
                        self.tableWidget = QtWidgets.QTableWidget()
                        self.tableWidget.setGeometry(QtCore.QRect(220, 100, 411, 392))
                        self.tableWidget.setColumnCount(2)
                        self.tableWidget.setRowCount(5)
                        self.tableWidget.show()
                
                        item = QtWidgets.QTableWidgetItem()
                        item.setText("Amount")
                        self.tableWidget.setHorizontalHeaderItem(1, item)
                
                        records = [
                            ["Product 1", 1000],
                            ["Product 2", 500],
                            ["Product 3", 600],
                            ["Product 4", 300],
                            ["Product 5", 800],
                        ]
                
                        self.df = pd.DataFrame(records, columns=["Name", "Amount"])
                
                        for r in range(5):
                            for c in range(2):
                                table_item = str(self.df.iloc[r, c])
                                self.tableWidget.setItem(r, c, QtWidgets.QTableWidgetItem(table_item))
                
                        self.pb_extract = QtWidgets.QPushButton(self.tableWidget)
                        self.pb_extract.setGeometry(QtCore.QRect(10, 200, 75, 23))
                        self.pb_extract.clicked.connect(self.extract)
                        self.pb_extract.setText("EXTRACT")
                        self.pb_extract.show()
                
                    def extract(self):
                        self.worker.execute(self.df.copy(), "Products.xlsx")
                        self.downloader_progressbar.show()
                
                    @QtCore.pyqtSlot()
                    def on_started(self):
                        self.downloader_progressbar.progressbar.setRange(0, 0)
                
                    @QtCore.pyqtSlot()
                    def on_finished(self):
                        self.downloader_progressbar.progressbar.setRange(0, 1)
                
                
                def run():
                    app = QtWidgets.QApplication(sys.argv)
                    app.setStyle("fusion")
                    w = Window()
                    sys.exit(app.exec_())
                
                
                run()
                

                這篇關于如何在python中將文件保存為excel時顯示進度條?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                相關文檔推薦

                How to bind a function to an Action from Qt menubar?(如何將函數綁定到 Qt 菜單欄中的操作?)
                PyQt progress jumps to 100% after it starts(PyQt 啟動后進度躍升至 100%)
                How to set yaxis tick label in a fixed position so that when i scroll left or right the yaxis tick label should be visible?(如何將 yaxis 刻度標簽設置在固定位置,以便當我向左或向右滾動時,yaxis 刻度標簽應該可見
                `QImage` constructor has unknown keyword `data`(`QImage` 構造函數有未知關鍵字 `data`)
                Change x-axis ticks to custom strings(將 x 軸刻度更改為自定義字符串)
                Erasing pen on a canvas(在畫布上擦筆)

                  <tbody id='2Qmee'></tbody>

                <small id='2Qmee'></small><noframes id='2Qmee'>

                • <bdo id='2Qmee'></bdo><ul id='2Qmee'></ul>

                  1. <tfoot id='2Qmee'></tfoot>

                      1. <i id='2Qmee'><tr id='2Qmee'><dt id='2Qmee'><q id='2Qmee'><span id='2Qmee'><b id='2Qmee'><form id='2Qmee'><ins id='2Qmee'></ins><ul id='2Qmee'></ul><sub id='2Qmee'></sub></form><legend id='2Qmee'></legend><bdo id='2Qmee'><pre id='2Qmee'><center id='2Qmee'></center></pre></bdo></b><th id='2Qmee'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='2Qmee'><tfoot id='2Qmee'></tfoot><dl id='2Qmee'><fieldset id='2Qmee'></fieldset></dl></div>
                          <legend id='2Qmee'><style id='2Qmee'><dir id='2Qmee'><q id='2Qmee'></q></dir></style></legend>

                          主站蜘蛛池模板: 欧美一级色 | 国产日韩在线播放 | 成人一级视频 | 在线免费观看日韩av | 国产精品久久久一区二区三区 | 亚洲一级免费视频 | 在线播放黄色 | 中文字幕日韩欧美 | a级片在线免费观看 | 91色网站| 久久天天干 | 在线观看小视频 | 欧美日韩国产在线观看 | 国产黄a三级三级看三级 | 免费观看一区二区三区 | 好色网站 | 国产视频网 | 国 产 黄 色 大 片 | 日韩精品视频在线 | 中文字幕在线观看免费视频 | 国产不卡在线视频 | 日韩精品一区二区视频 | 日日av | 成人三级小说 | 国产精品www | 欧美精品在线免费观看 | 黄色一级视频在线观看 | 91导航| 成人高清视频在线观看 | 成人毛片在线 | 久久精品久久久久 | 福利网站在线观看 | 在线免费看a | 在线观看欧美日韩 | av中文在线 | 欧美网站在线观看 | 国产精品久久久久久无人区 | 久久久精品免费 | 四虎影院在线 | 国产精品一区在线观看 | 成人深夜福利视频 |