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

<tfoot id='IjWQg'></tfoot>

        <bdo id='IjWQg'></bdo><ul id='IjWQg'></ul>

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

    2. <small id='IjWQg'></small><noframes id='IjWQg'>

      線程實時記錄

      Threads real-time logging(線程實時記錄)
      <i id='W3ZC6'><tr id='W3ZC6'><dt id='W3ZC6'><q id='W3ZC6'><span id='W3ZC6'><b id='W3ZC6'><form id='W3ZC6'><ins id='W3ZC6'></ins><ul id='W3ZC6'></ul><sub id='W3ZC6'></sub></form><legend id='W3ZC6'></legend><bdo id='W3ZC6'><pre id='W3ZC6'><center id='W3ZC6'></center></pre></bdo></b><th id='W3ZC6'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='W3ZC6'><tfoot id='W3ZC6'></tfoot><dl id='W3ZC6'><fieldset id='W3ZC6'></fieldset></dl></div>
        <bdo id='W3ZC6'></bdo><ul id='W3ZC6'></ul>

        <small id='W3ZC6'></small><noframes id='W3ZC6'>

        <legend id='W3ZC6'><style id='W3ZC6'><dir id='W3ZC6'><q id='W3ZC6'></q></dir></style></legend>
            <tbody id='W3ZC6'></tbody>

          <tfoot id='W3ZC6'></tfoot>

                本文介紹了線程實時記錄的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                問題描述

                我正在編寫一個用于調(diào)整照片大小的簡單腳本.我想要一個帶有文本字段的小部件,在調(diào)整每個文件大小后會在其中顯示消息.

                I'm writing a simple script for resizing photos. I'd like to have a widget with text-field in which messages appear after resizing each file.

                #!/usr/bin/python3
                # -*- coding: utf-8 -*-
                
                import time, sys
                from PyQt5.QtCore import pyqtSignal, QThread
                from PyQt5.QtWidgets import QApplication, QPushButton, QTextEdit, QWidget, QVBoxLayout
                
                class Thread(QThread):
                    log = pyqtSignal(str)
                    def __init__(self, parent=None):
                        super(Thread, self).__init__(parent)
                    def test(self, i):
                        time.sleep(1)
                        self.log.emit(str(i))
                
                class Widget(QWidget):
                    def __init__(self):
                        super().__init__()
                        self.ui()
                    def process(self):
                        self.toLog('some text...')
                        worker = Thread()
                        worker.log.connect(self.toLog)
                        for i in range(1, 5):
                            worker.test(i)
                    def ui(self):
                        self.LogOutputTxt = QTextEdit()
                        self.LogOutputTxt.setReadOnly(True)
                        startBtn = QPushButton('Start')
                        startBtn.clicked.connect(self.start)
                        layout = QVBoxLayout()
                        layout.addWidget(self.LogOutputTxt)
                        layout.addWidget(startBtn)
                        self.setLayout(layout)
                        self.resize(400, 300)
                        self.show()
                    def start(self):
                        self.toLog('start')
                        self.process()
                    def toLog(self, txt):
                        self.LogOutputTxt.append(txt)
                
                if __name__ == '__main__':
                    app = QApplication(sys.argv)
                    ui = Widget()
                    sys.exit(app.exec_())
                

                到目前為止,在調(diào)整所有文件大小后,所有消息都會立即顯示.有沒有辦法一一做到(我的意思是文件大小調(diào)整、消息顯示等)?

                So far all the messages appear at once after all files are resized. Is there any way to do it one by one (I mean file resized, message displayed, etc.)?

                推薦答案

                下面是你想要的腳本的重寫.

                Below is a re-write of your script that should do want you want.

                但請注意,這非常簡單,并且不會太努力地確保線程安全.setItems 方法只是制作傳遞給它的數(shù)據(jù)的淺表副本 - 這僅適用于不可變對象列表.您還必須確保您永遠不會在工作線程中執(zhí)行任何 gui 操作,其中包括對像素圖的操作.如果要操作圖像,請使用 QImage.(如果您想知道如何停止正在運行的線程,請參閱例如 this answer).

                But note that this is quite simplistic, and doesn't try too hard to ensure thread-safety. The setItems method just makes a shallow copy of the data passed to it - which is only really okay for a list of immutable objects. You also must make sure you never do any gui operations inside the worker thread, which includes operations on pixmaps. If you want to manipulate images, use QImage. (And if you want to know how to stop a running thread, see for example this answer).

                #!/usr/bin/python3
                # -*- coding: utf-8 -*-
                
                import time, sys
                from PyQt5.QtCore import pyqtSignal, QThread
                from PyQt5.QtWidgets import (
                    QApplication, QPushButton, QTextEdit, QWidget, QVBoxLayout
                    )
                
                class Thread(QThread):
                    log = pyqtSignal(str)
                
                    def __init__(self, parent=None):
                        super(Thread, self).__init__(parent)
                        self._items = []
                
                    def setItems(self, items):
                        if not self.isRunning():
                            self._items[:] = items
                
                    def run(self):
                        for item in self._items:
                            time.sleep(1)
                            self.log.emit('processing: %s' % item)
                
                class Widget(QWidget):
                    def __init__(self):
                        super().__init__()
                        self.ui()
                        self._worker = Thread(self)
                        self._worker.log.connect(self.toLog)
                        self._worker.started.connect(lambda: self.toLog('start'))
                        self._worker.finished.connect(lambda: self.toLog('finished'))
                
                    def process(self):
                        items = ['Image%02d.png' % i for i in range(10)]
                        self._worker.setItems(items)
                        self._worker.start()
                
                    def ui(self):
                        self.LogOutputTxt = QTextEdit()
                        self.LogOutputTxt.setReadOnly(True)
                        startBtn = QPushButton('Start')
                        startBtn.clicked.connect(self.start)
                        layout = QVBoxLayout()
                        layout.addWidget(self.LogOutputTxt)
                        layout.addWidget(startBtn)
                        self.setLayout(layout)
                        self.resize(400, 300)
                        self.show()
                
                    def start(self):
                        if not self._worker.isRunning():
                            self.process()
                
                    def toLog(self, txt):
                        self.LogOutputTxt.append(txt)
                
                if __name__ == '__main__':
                
                    app = QApplication(sys.argv)
                    ui = Widget()
                    sys.exit(app.exec_())
                

                這篇關(guān)于線程實時記錄的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

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

                相關(guān)文檔推薦

                How to bind a function to an Action from Qt menubar?(如何將函數(shù)綁定到 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` 構(gòu)造函數(shù)有未知關(guān)鍵字 `data`)
                Change x-axis ticks to custom strings(將 x 軸刻度更改為自定義字符串)
                How to show progress bar while saving file to excel in python?(如何在python中將文件保存為excel時顯示進度條?)
                <i id='61jFR'><tr id='61jFR'><dt id='61jFR'><q id='61jFR'><span id='61jFR'><b id='61jFR'><form id='61jFR'><ins id='61jFR'></ins><ul id='61jFR'></ul><sub id='61jFR'></sub></form><legend id='61jFR'></legend><bdo id='61jFR'><pre id='61jFR'><center id='61jFR'></center></pre></bdo></b><th id='61jFR'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='61jFR'><tfoot id='61jFR'></tfoot><dl id='61jFR'><fieldset id='61jFR'></fieldset></dl></div>
                  <tfoot id='61jFR'></tfoot>

                  1. <legend id='61jFR'><style id='61jFR'><dir id='61jFR'><q id='61jFR'></q></dir></style></legend>
                      • <bdo id='61jFR'></bdo><ul id='61jFR'></ul>

                      • <small id='61jFR'></small><noframes id='61jFR'>

                            <tbody id='61jFR'></tbody>

                        • 主站蜘蛛池模板: 91精品国产成人观看 | 高清免费av | 羞羞在线视频 | 性爱视频日本 | 精品福利在线 | 久久久精| 欧美精品二区 | 日韩a级片| 婷婷第四色| 性巴克成人免费网站 | 日本视频www| 免费v片在线观看 | 综合久久网 | 国产成人久久 | 日韩字幕| 亚洲天堂中文字幕 | 欧美国产在线视频 | 天天干夜夜爱 | 丁香婷婷激情 | 国产特级黄色片 | av观看网站 | 成人黄色免费视频 | 一区视频 | 久草视 | 国产精品成人免费一区久久羞羞 | 一区二区欧美日韩 | 一级片在线免费观看 | 玖玖视频在线 | 欧美日韩在线一区二区三区 | 国产小视频在线播放 | 夜夜嗷 | 久久久免费看 | 97精品超碰一区二区三区 | 青青国产在线 | 免费一级黄色录像 | 免费人成 | 在线黄网 | 久久久久久久91 | 日韩毛片网站 | 麻豆精品在线播放 | 成年人黄色网址 |